Problém s kódem ve VBA

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
mikie16
Level 1.5
Level 1.5
Příspěvky: 109
Registrován: 06 srp 2009 11:30

Problém s kódem ve VBA

Příspěvek 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..
Uživatelský avatar
Speed_dead
Level 6
Level 6
Příspěvky: 3288
Registrován: 13 dub 2010 10:33
Bydliště: Praha
Kontaktovat uživatele:

Re: Problém s kódem ve VBA

Příspěvek 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ší.
Google ví skoro vše. Ale někdy je problém co tam napsat, aby to našlo to, co hledám.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem ve VBA

Příspěvek 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?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
d1amond
člen HW spec týmu
Příspěvky: 16119
Registrován: 26 kvě 2008 10:14
Bydliště: České Budějovice

Re: Problém s kódem ve VBA

Příspěvek 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:
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?
Uživatelský avatar
Speed_dead
Level 6
Level 6
Příspěvky: 3288
Registrován: 13 dub 2010 10:33
Bydliště: Praha
Kontaktovat uživatele:

Re: Problém s kódem ve VBA

Příspěvek 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)
Google ví skoro vše. Ale někdy je problém co tam napsat, aby to našlo to, co hledám.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem ve VBA

Příspěvek 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?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
Speed_dead
Level 6
Level 6
Příspěvky: 3288
Registrován: 13 dub 2010 10:33
Bydliště: Praha
Kontaktovat uživatele:

Re: Problém s kódem ve VBA

Příspěvek 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.
Google ví skoro vše. Ale někdy je problém co tam napsat, aby to našlo to, co hledám.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Problém s FPS
    od mcrakvar » » v Vše ostatní (sw)
    4 Odpovědi
    9375 Zobrazení
    Poslední příspěvek od petr22
  • Problém s internetem
    od yakubb23 » » v Sítě - hardware
    1 Odpovědi
    8092 Zobrazení
    Poslední příspěvek od meda2016
  • Problém s mikrofonem
    od Shokata88 » » v Problémy s hardwarem
    4 Odpovědi
    5474 Zobrazení
    Poslední příspěvek od Shokata88
  • Problém s internetem
    od valama » » v Internet a internetové prohlížeče
    11 Odpovědi
    10267 Zobrazení
    Poslední příspěvek od RIKI22
  • Problem s nabijanim
    od AirCrew » » v Problémy s hardwarem
    4 Odpovědi
    12389 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Programování a tvorba webu“