Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-formulare » excel-inputbox-vstupni-box
Logo pokročilý expert

InputBox - vstupní dialogový box

Videokurzy Excel

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

Úvodem do InputBox

Microsoft Excel logo

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.

Obsah článku

Pro přehlednost je článek rozdělen na jednotlivé kapitoly:

Příklad

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.


Syntaxe InputBox - aneb trocha teorie

Popis syntaxe InputBox včetně podrobného popisu jednotlivých parametrů.

InputBox - Syntaxe

InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, Help, context)
  • Zpráva - povinné - text zprávy zobrazení v dialogu
  • Titulek_dialogu - nepovinné - text v titulku dialogu
  • Výchozí_hodnota - nepovinné - pokud je požadavek na výchozí hodnotu
  • Posice_X - nepovinné - pozice okna x
  • Posice_Y - nepovinné - pozice okna y
  • Help - nepovinné - odkaz na soubor s nápovědou
  • context - nepovinné - Číslo tématu nápovědy ze souboru nápovědy - musí být zadán Help.
MS Excel 2010 - inputbox

Application.InputBox - Syntaxe

Application.InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, Help, HelpID, Typ)
  • Zpráva - povinné - text zprávy zobrazení v dialogu. Maximální délka textu je 1024 znaků. Lze použít konstanty vbCr, vbLf nebo vbCrLf.
  • Titulek_dialogu - nepovinné - text v titulku dialogu
  • Výchozí_hodnota - nepovinné - pokud je požadavek na výchozí hodnotu
  • Výchozí_hodnota - nepovinné - pokud je požadavek na výchozí hodnotu
  • Posice_X - nepovinné - pozice okna x
  • Posice_Y - nepovinné - pozice okna y
  • Help - nepovinné - odkaz na soubor s nápovědou
  • HelpID - nepovinné -
  • Typ - nepovinné - Typ, typy lze sčítat, např.: 1+2
    • 0 - vzorec
    • 1 - číslo
    • 2- text
    • 4 - logická hodnota
    • 8 - buŇka reference, oblast objekt
    • 16 - chybová hodnota
    • 64 - pole
MS Excel 2010 - inputbox

InputBox - praktická ukázka použití

Základní zadání:

MojeHodnota = InputBox("Zádej hodnotu:") MS Excel - inputbox

Kompletní zadání

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") MS Excel - inputbox

Pokud bude předpřipravené číslo 5:

MojeHodnota = InputBox("Zádej hodnotu:", "Název okna", 5)

Application.InputBox - TYP - praktická ukázka použití

  • 0 - vzorec
  • 1 - číslo
  • 2- text
  • 4 - logická hodnota
  • 8 - buňka reference, oblast objekt
  • 16 - chybová hodnota
  • 64 - pole

Application.InputBox - TYP 0 - vzorec

varInput = Application.InputBox("Zadej vzorec", Type:=0)

Application.InputBox - TYP 1 - číslo

Zadávání a kontrola čísel:

varInput = Application.InputBox("Zadej číslo", Type:=1) MsgBox (varInput) MS Excel - Application.inputbox

Chybová zpráva pokud se nezadá číslo.

MS Excel - Application.inputbox - chyba

Application.InputBox - TYP 2 - text

Zadání textu

varInput = Application.InputBox("Zadej Text", Type:=2)

Application.InputBox - TYP 4 - číslo

Zadání čísla

varInput = Application.InputBox("Zadej Číslo", Type:=4)

Application.InputBox - TYP 8 - buňka reference, oblast objekt

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

Application.InputBox - TYP 16 - chybová hodnota

v přípravě

Application.InputBox - TYP 64 - pole

v přípravě

Application.InputBox - TYP - kombinace

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

Plocha obdelníků - Příklad 1

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

Plocha obdelníků - Příklad 2

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
Microsoft Excel VBA - stahuj logo

Ke stažení

Ke stažení zdarma: InputBox - Praktický příklad soubor ve formátu *.xls. Vyzkoušejte si hotové formuláře prakticky.


Další související články:

Další články týkající se formulářů:

Závěr

Využívate InputBox, nebo řešíte tvorbou vlastních formulářů?

Článek byl aktualizován: 19.09.2020 11:06

Odměna

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.


Pavel Lasák - autor webu

Pavel Lasák

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ů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Pavel Lasák

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 :)

PavelD

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.

Pavel Lasák

Přidáno: 07.08.12 18:27

To PavelD: Velikost intervalu i čísla od, do se mění na přání uživatel?

PavelD

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

Pavel Lasák

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

Pavel Lasák

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/

PavelD

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í.

Pavel Lasák

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/

Pavel Lasák

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.

PavelD

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

PavelD

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ěď

Tereza B

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.

Pavel Lasák

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ě.

Matěj

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ěď.

Pavel Lasák

Přidáno: 06.11.14 21:33

To Matěj: Naprogramovat si vlastní funkci pro InputBox, nebo použít formulář.

Petr Pecháček

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).

Pavel Lasák

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.

Theo

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.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

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 - 2021 |