Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
InputBox - Jak vytvořit formulář pro zadání vstupních dat.
Doplněno 1.4.2016
Potřebujete-li zadat data do Excel pomocí formuláře ve VBA. Můžete vytvořit příslušný formulář. Nebo pro jeden údaj využít InputBox. Slouží pro zadání jedné vstupní informace (číslo, hodnota), která se předá zpracovatelskému programu.
Pro přehlednost je článek rozdělen na jednotlivé kapitoly:
Potřebujete vypočíst plochu obdélníku. Pomocí InputBox požádame uživatele o zadání délky strany A a pak o délku strany B. Hodnoty vynásobíme a máme plochu obdélníku.
Poznámka: Vím že výpočet plochy obdélniku se dá provést elegantněji (vynásobím dvě čísla přímo v listu Excelu), ale jde o ukázku použití InputBox.
Popis syntaxe InputBox včetně podrobného popisu jednotlivých parametrů.
InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, Help, context)
Application.InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, Help, HelpID, Typ)
MojeHodnota = InputBox("Zádej hodnotu:")
Ukázka jak je kompletně vyplněno, včetně popisu okna a předpřipravené hodnoty
MojeHodnota = InputBox("Zádej hodnotu:", "Název okna", "Předpřipravená hodnota")
Pokud bude předpřipravené číslo 5:
MojeHodnota = InputBox("Zádej hodnotu:", "Název okna", 5)
varInput = Application.InputBox("Zadej vzorec", Type:=0)
Zadávání a kontrola čísel:
varInput = Application.InputBox("Zadej číslo", Type:=1)
MsgBox (varInput)
Chybová zpráva pokud se nezadá číslo.
Zadání textu
varInput = Application.InputBox("Zadej Text", Type:=2)
Zadání čísla
varInput = Application.InputBox("Zadej Číslo", Type:=4)
Jak vybírat oblast například pro kopii
Set MojeOblast = Application.InputBox(Prompt:="Vyber Oblast", Title:="Oblasti typ 8", Type:=8)
Application.Goto (UserRange)
Selection.Copy
v přípravě
v přípravě
Když je potřeba vybrat typ
Dim varInput As Variant
Dim myChoice As Integer
myChoice = Application.InputBox("Vyber typ zadání:" & vbCrLf _
& "2. Text" & vbCrLf _
& "8. Obast", Type:=1)
Select Case myChoice
Case Is = 2
varInput = Application.InputBox("Enter Text", Type:=2)
Case Is = 8
varInput = Application.InputBox("Výběr oblasti:", Type:=8)
End Select
Potřebujeme vypočítat obsah obdelníku, kdy uživatel pomocí dialogového okna zadá stranu a a stanu b
Private Sub CommandButton1_Click()
ZpravaA = "Zadejte stranu A (m)"
ZpravaB = "Zadejte stranu B (m)"
Titulek_dialogu = "Vstupní dialog pro vypočet obdelníku"
Vychozi_hodnota = 0
Posice_X = 100
Posice_Y = 200
StranaA = InputBox(ZpravaA, Titulek_dialogu, Vychozi_hodnota, Posice_X, Posice_Y)
StranaB = InputBox(ZpravaB, Titulek_dialogu, Vychozi_hodnota, Posice_X, Posice_Y)
Plocha = StranaA * StranaB
MsgBox (Plocha)
End Sub
Druhý příklad na výpočet obsahu obdelníků.
Private Sub CommandButton1_Click()
ZpravaA = "Zadejte stranu A (m)"
ZpravaB = "Zadejte stranu B (m)"
Titulek_dialogu = "Vstupní dialog pro vypočet obdelníku"
Vychozi_hodnota = 0
Posice_X = 100
Posice_Y = 200
StranaA = Application.InputBox(ZpravaA, Titulek_dialogu, Vychozi_hodnota, Posice_X, Posice_Y,
Type:=1)
StranaB = Application.InputBox(ZpravaB, Titulek_dialogu, Vychozi_hodnota, Posice_X, Posice_Y, Type:=1)
Plocha = StranaA * StranaB
MsgBox (Plocha)
End Sub
Ke stažení zdarma: InputBox - Praktický příklad . Vyzkoušejte si hotové formuláře prakticky.
Další články týkající se formulářů:
Využívate InputBox, nebo řešíte tvorbou vlastních formulářů?
Článek byl aktualizován: 19.09.2020 11:06
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 22.05.12 21:21
Pokud chcete přílohu v článku použít jako výsledek domacího úkolu, doporučuji trochu změnit, ať profesor neodhalí odkud čerpáte informace :)
Přidáno: 07.08.12 14:37
Dobrý den pane Lasák, prosím o radu, jak docílit toto: V dialogu ImputBox zadám hodnoty pro náhodná čísla třeba v počtu 50, intervalu od do Jak ale zapsat kód pro vypsání jednotlivých hodnot třeba do první prázné buňky, na List2, ve sloupciA a pokračovat postupně do A50.Nevím jak na to a nenašel jsem ani nic podobného. viz špatný kód http://imgupload.sk/viewer.php?file=0vnq52bfr4xqr9y5wcvc.jpg Děkuji předem za radu P.D.
Přidáno: 07.08.12 18:27
To PavelD: Velikost intervalu i čísla od, do se mění na přání uživatel?
Přidáno: 07.08.12 18:48
To PavelD: Velikost intervalu i čísla od, do se mění na přání uživatel? Ano zadáním ve třech InputBoxech
Přidáno: 08.08.12 17:12
To PavelD: Základní kód pro tlačítko
PocetNahodnychCisel = TextBox3.Value
For i = 1 To PocetNahodnychCisel
HodnotaLow = TextBox1.Value
HodnotaHigh = TextBox2.Value
NahodneCislo = (HodnotaHigh - HodnotaLow) * Rnd() + HodnotaLow
Worksheets("List1").Cells(i + 5, 1) = NahodneCislo
Next i
Přidáno: 08.08.12 19:08
článek o automatickém generování náhodných čísel http://office.lasakovi.com/excel/ostatni/generator-nahodnych-cisel-excel/
Přidáno: 09.08.12 09:34
Dobrý den pane Lasák, příklad je OK, fuguje bezva a kód je lehce pochopitelný. Jak ale upravit kód, když chci vygenerované hodnoty v buňkách zachovat a pokačovat se zápisem v další prázdné - následné buňce ve stejném sloupci? Omlouvám se že Vás tímto zdržuji, ale pro pochopení začátečníkem takto prezentované ukázky úprav kódu jsou perfektní.
Přidáno: 09.08.12 18:34
To PavelD: Napříkald takto...
PocetNahodnychCisel = TextBox3.Value
ZvolSloupec = Worksheets("List1").Cells(5, 2)
For i = 1 To PocetNahodnychCisel
a = ZvolSloupec + 1
Worksheets("List1").Cells(5, 2) = a
HodnotaLow = TextBox1.Value
HodnotaHigh = TextBox2.Value
NahodneCislo = (HodnotaHigh - HodnotaLow) * Rnd() + HodnotaLow
Worksheets("List1").Cells(i + 5, a) = NahodneCislo
Next i
PocetNahodnychCisel = TextBox3.Value
ZvolSloupec = Worksheets("List1").Cells(5, 2)
For i = 1 To PocetNahodnychCisel
a = ZvolSloupec + 1
Worksheets("List1").Cells(5, 2) = a
HodnotaLow = TextBox1.Value
HodnotaHigh = TextBox2.Value
NahodneCislo = (HodnotaHigh - HodnotaLow) * Rnd() + HodnotaLow
Worksheets("List1").Cells(i + 5, a) = NahodneCislo
Next i
doplnil jsem na http://office.lasakovi.com/excel/ostatni/generator-nahodnych-cisel-excel/
Přidáno: 13.09.12 21:38
Možné ošetření stavu kdy u InputBox není nic zadáno:
pokus = Application.InputBox("Zadej:")
If StrPtr(pokus) = 0 Then Exit Sub
PS: Protože sjem měl dotaz tak doplňuji.
Přidáno: 31.01.13 08:43
Dobrý den pane Lasák prosím o radu. Na Listu1 ve sloupci A jsou vypsané dialogy např. xlDialogOpen xlDialogOpenLinks xlDialogSaveAs xlDialogFileDelete Jak docílit toho abych vybral přes InputBox třeba buňku (A2 = xlDialogOpenLinks) a hodnota se dosadila do kódu pro spuštění tohoto vybraného dialogu Kód:(v poslední větě je chyba run time error 438) Private Sub CommandButton4_Click() Dim zprava As String Echo = "Vyber dialog ve sloupci A" Titulek_dialogu = "Vstupní dialog " Vychozi_hodnota = 0 Posice_X = 100 Posice_Y = 200 zprava = Application.InputBox(Echo, Titulek_dialogu, Vychozi_hodnota, Posice_X, Posice_Y, Type:=2) MsgBox ("Vybrali jste dialog" & zprava) Application.Dialog(zprava).Show End Sub V čem je chyba? Děkuji za radu
Přidáno: 01.02.13 10:05
Dobrý den pane Lasák, jak sem mám poslat kód aby byl zobrazený v listboxu s posuvnými roletami na pravo a dole? Děkuji za odpověď
Přidáno: 19.03.13 11:55
Dobrý den, bylo by možné, aby se v jednom dialogovém okně oběvila možnost doplnit dva údaje? Potřebovala bych např. aby se dotaz na velikost strany A i B objevil v jednom okně najednou. Tento systém by se mi zdál přehlednější, ale nějak na to nemůžu přijít. Předem děkuji.
Přidáno: 19.03.13 16:45
To Tereza B: Vytvořit vlastní formulář. Dialogový box je jen "usnadnění" ať nemusím tvořit vlastní formulář s několika vstupními poli, tak se zeptám postupně.
Přidáno: 25.06.14 20:36
Ahoj, mám dotaz. je možné, aby se při zadávání textu do inputboxu místo textu zobrazovali pouze hvězdičky (*)? Děkuji za odpověď.
Přidáno: 06.11.14 21:33
To Matěj: Naprogramovat si vlastní funkci pro InputBox, nebo použít formulář.
Přidáno: 07.11.14 15:19
Tereza: Příklad zadání bloku 2 vkládaných řádků pod každý třetí řádek: 2;3 (tj. použijte oddělovač nebo jiné "kódové" zadání a nepotřebujete tak další pole. Ve VBA pak aplikujte na vstup Split (Join). Matěj: Trochu hardcore řešení představuje využití API funkcí a odchytávání InputBoxu. Asi snazší ale bude pro vás ten vlastní formulář a textové pole uživající vlastnost PasswordChar. Pavel: Chybí mi tu podrobnější rozebrání Type, především upozornění na Type:=8, tj. náhrada za RefEdit bez formuláře).
Přidáno: 14.11.14 14:57
To Petr Pecháček: Děkuji za odpovědi. Časem doplním Type:=8, další příklady, možná i to "hardcore" řešení pro odchytávání InputBoxu.
Přidáno: 24.03.15 19:20
Dobrý den pane Lasák. Můžete mi poradit. Používám Inputbox (s typem 8, pole buňek listu) pro zadání datumu Velikonoc z List2 do prvku aktiveX Label na List1. Při volbě z listu a potvrzení OK proběhne jak má. Když se snažím odladit, že uživatel se rozhodne opustit InputBox tlačítkem STORNO vloží mi do Labelu FALSE místo ponechání původního datumu. Použití If vbCancel then a ani if DatumNove = False then (DatumNove = Inputbox ...) mi Label.Caption neponechalo nebo nepřepsalo na zadanou hodnotu. Děkuji.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |