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..
Problém s kódem ve VBA
- Speed_dead
- Level 6
- Příspěvky: 3281
- Registrován: duben 10
- Bydliště: Praha
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Problém s kódem ve VBA
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
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ší.
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.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Problém s kódem ve VBA
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?
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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- člen HW spec týmu
-
Elite Level 12
- Příspěvky: 16119
- Registrován: květen 08
- Bydliště: České Budějovice
- Pohlaví:
- Stav:
Offline
Re: Problém s kódem ve VBA
Ano, existuje elegantnější fce IsNumeric.
Nápověda:
Nebudeme delat celý domácí úkol
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

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č?
Chcete si nechat sestavit nový počítač?
- Speed_dead
- Level 6
- Příspěvky: 3281
- Registrován: duben 10
- Bydliště: Praha
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Problém s kódem ve VBA
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.

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.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Problém s kódem ve VBA
š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
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Speed_dead
- Level 6
- Příspěvky: 3281
- Registrován: duben 10
- Bydliště: Praha
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Problém s kódem ve VBA
Š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.
Pokud se to nepovede, vypadne tuna nepoužitelných odkazů a nebo taky nic.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 4
- 3382
-
od lukas222
Zobrazit poslední příspěvek
05 lis 2024 13:36
-
- 4
- 4014
-
od petr22
Zobrazit poslední příspěvek
28 lis 2024 10:06
-
- 11
- 4778
-
od RIKI22
Zobrazit poslední příspěvek
06 dub 2025 20:42
-
- 4
- 2557
-
od Shokata88
Zobrazit poslední příspěvek
19 úno 2025 19:18
-
- 1
- 4629
-
od meda2016
Zobrazit poslední příspěvek
31 led 2025 21:50
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů