Stránka 1 z 1

Problém s kódem ve VBA

Napsal: 09 lis 2010 19:46
od mikie16
Zdravím, lidi. Chtěl bych poprosit o pomoc, ve škole sme začali programovat a dostali sme jednoduchý příklad, ale opravdu si s ním nevím rady, programujeme ve VBA.

Vytvořte uživatelsky definovanou funkci s názve JeCislo, která na základě vstupního parametru Vstup vrátí jako výsledek slovo číslo v případě, že parametr je skutečně číslo. V případě, že vstupní buňka je prázdná, vrátí slovo Nic a ve všech případech vrátí znakový řetězec Neni cislo.

Dekuji..

Re: Problém s kódem ve VBA

Napsal: 09 lis 2010 23:43
od Speed_dead
Není to asi nejoptimálnější způsob. nicméně to funguje. Formulář má tři prvky:
Text_vstup - textové pole
Tlačítko - commnon button
Text_výstup - textové pole (může se použít i label, nebo popup okno)
Pod tlačítkem pod akcí click se skrývá tento kód

Kód: Vybrat vše

If Val(Text_vstup.Text) = 0 And Len(Text_vstup.Text) > 0 Then Text_vystup.Text = "Neni číslo"
If Val(Text_vstup.Text) = 0 And Len(Text_vstup.Text) = 0 Then Text_vystup.Text = "Nic"
If Text_vstup.Text = "0" Or Val(Text_vstup.Text) > 0 Then Text_vystup.Text = "Číslo"


Když je číselná hodnota nula a současně délka znaků je větší jak nula je to Text
Když je číselná hodnota nula a současně délka znaků je nula není tam Nic
Když je hodnota znaku nula a nebo číselná hodnota je větší jak nula je to Číslo

Tohle si ale musíš doupravit tak, aby to odpovídalo vašemu zadání.

P.S. Toto je uděláno na desítkovou soustavu. Na hexadecimální čísla by to bylo složitější.

Re: Problém s kódem ve VBA

Napsal: 10 lis 2010 07:48
od CZechBoY
co když tam zadá 0? to jako 0 není číslo? ehm zajímavé, nás na základce učili že i 0 je číslo :-)
není ve VB nějaká funkce na zjištění numeričnosti? třeba isNumeric nebo tak něco?

Re: Problém s kódem ve VBA

Napsal: 10 lis 2010 08:12
od d1amond
Ano, existuje elegantnější fce IsNumeric.
Nápověda:

Kód: Vybrat vše


Private Sub cmdOver_Click()
Dim over As Boolean
' doplnit jeste vstup a vystup (jako Range)

over  = IsNumeric("nejakyVstup")
'no a doplnit podminky typu, kdyz vstup = "", tak chyba"; kdyz overit = true tak udelej neco,...

End Sub


Nebudeme delat celý domácí úkol :bigups:

Re: Problém s kódem ve VBA

Napsal: 10 lis 2010 08:15
od Speed_dead
co když tam zadá 0?

Toto řeší první část řádku
If Text_vstup.Text = "0" Or Val(Text_vstup.Text) > 0 Then Text_vystup.Text = "Číslo"

Jak jsem psal, myslel jsem si to, že může existovat na to funkce. Nicméně jsem po ni nechtěl dlouze pátrat a tak jsem to navrhnul takto.VBA jsem se nikdy ve škole neučil a tak jsem se naučil doma jen základy, když jsem si s tím hrál. Ve škole jsme se učili jen základy pro Basic pro Z80. 8)

Re: Problém s kódem ve VBA

Napsal: 10 lis 2010 16:02
od CZechBoY
šlo by to udělat samozřejmě lepším větvením že, ale isNumeric asi existuje i ve VBA, tak proč hrabat 3ify?

Re: Problém s kódem ve VBA

Napsal: 10 lis 2010 16:34
od Speed_dead
Šlo by to narvat i do jednoho několikanásobně větveného ifu, ale tento zápis se mě zdá celkem nepřehledný. Ale stále by to byla náhrada tří ifů. Ať na tím přemýšlím jak přemýšlím minimálně dva ify tam být musí. Ať v jednotlivých řádcích, čí zapsané zkráceně. Jelikož jeden if zvládne maximálně dva výstupy, ale ne tři.