1. Okno InputBox – wprowadzanie danych
Dobrze, że dotarłeś już do tej części kursu. Po oknie MsgBox poznasz teraz okno do wprowadzania danych do naszego kodu VB. Podobnie jak okno MsgBox, okno te ma wiele dodatkowych parametrów. Spróbujmy stworzyć prosty program służący do wprowadzenia danych do komórki A1 w naszym arkuszu danych.
Sub InputExample() Range("A1") = InputBox("Uzupełnij komórkę A1") End Sub
Jak widzimy, do wartości komórek naszego arkusza odwołujemy się poprzez podanie ich nazwy w cudzysłowie, stosując polecenie Range(„komórka”). W nawiasach polecenia InputBox wpisujemy komunikat, który wyświetli się przed wprowadzeniem danych przez użytkownika. Komórkę A1 możemy zaadresować także przy użyciu polecenia Cells, jak poniżej:
Sub InputExample1() Cells(1, 1) = InputBox("Uzupełnij komórkę A1") End Sub
2. Okno InputBox – dodatkowe argumenty
Poniżej pełna postać funkcji InputBox zawierającej wszystkie argumenty. Jedynym obowiązkowym argumentem, który powinien zostać wypełniony jest argument Prompt, a więc komunikat wyświetlany przed wprowadzeniem wartości do kodu VBA.
Function InputBox(Prompt As String, [Title], [Default], [Left], [Top], [HelpFile], [HelpContextID])
Prompt – jest argumentem obowiązkowym. Jest to tekst wyświetlany w oknie.
Title – argument nieobowiązkowy. Tytuł okna, tak jak w przypadku okna MsgBox.
Default – Wartość Default, wyświetlająca się zanim wprowadzimy jakiekolwiek dane.
Left – Określa pozycję okna w pixelach od lewej strony
Top – Określa pozycję okna w pixelach od góry
HelpFile – argument nie jest obowiązkowy. Argument określa odniesienie do pliku pomocy. Sam numer pliku pomocy określamy w argumencie Context.
HelpContextId – argument nie jest obowiązkowy. W argumencie odnosimy się za pomocą wartości numerycznej do określonego w poprzednim argumencie HelpFile pliku pomocy.
3. Przykłady zastosowania – Jak korzystać z okna funkcji InputBox?
Wyobraźmy sobie, że chcemy napisać prosty program, który po wprowadzeniu imienia w okienku Input wyświetli nam powitanie korzystając z okna MsgBox. Do dzieła!
Sub BoxExample() Dim StrName As String 'deklarujemy zmienną imię StrName = InputBox("Wprowadź swoje imię") 'wprowadzamy wartość dla naszej zmiennej z okna InputBox MsgBox ("Witaj " & StrName & vbCrLf & "Miłego dnia!") 'prezentujemy komunikat End Sub
Jak widzimy, łączenie fraz w VBA odbywa się przy użyciu znaku „&„. Zamiennie możemy tu zastosować także znak „+„. Pomiędzy imieniem a powitaniem wstawiliśmy znak Enter wykorzystując do tego element „vbCrLf„.

Napiszmy krótki program, w którym użyjemy większości poznanych wcześniej argumentów okna. Poniżej warunki:
- Utwórzmy okno Input do wprowadzania roku urodzenia
- Okno z defaultu powinno wskazywać rok 1990
- Po wprowadzeniu roku urodzenia program powinien za pomocą funkcji Date() i Year() obliczać wiek użytkownika
- Okno powinno być umiejscowione w lewym górnym rogu ekranu
- Na zakończenie powinno wyświetlić się okno MsgBox z wiekiem użytkownika i podziękowaniem
Do dzieła:
Sub InputExample2() Dim strRok As String strRok = InputBox("Wprowadź swój rok urodzenia", "Okno wprowadzania", 1990, 0, 0) MsgBox "Twój wiek to: " & Year(Date) - strRok & " lat(a)" & vbCrLf & "Dziękuję za odpowiedź !!!" End Sub

Plik z przykładami załączam poniżej:
kurs_excel_vba_inputbox
4. Zadania (Rozwiązanie możesz wpisać w komentarzu)
4.1. Stwórz program wykorzystujący Msg i Input, wypełniający 4 komórki naszego arkusza od A1 do A4 danymi: Imię, Nazwisko, Wzrost, Wiek. Po zakończeniu powinien wyświetlić się komunikat o zakończeniu wprowadzania danych.
4.2 Usprawnij powyższy program. Po wyświetleniu komunikatu o wprowadzeniu danych wyświetl wszystkie wprowadzone dane przy użyciu jednego okna MsgBox. Spróbuj umiejscowić okno w prawym dolnym rogu ekranu. ustaw także wartości default.
11 komentarzy “Okno InputBox w Excel VBA”
Witam 🙂
Sub BoxExample()
Dim StrName As String
StrName = InputBox(„Wprowadź swoje imię”)
MsgBox („Witaj ” & vbCrLf & „Miłego dnia!”)
End Sub
czy tu jest jakiś błąd ???. mam zamiar sobie przypomnieć VBA i czegoś się sam dla siebie nauczyć, zatem jeśli porównuje przykłady widzę błąd, ale specjalistą nie jestem.
Powinno być:
Sub BoxExample()
Dim StrName As String
StrName = InputBox(„Wprowadź swoje imię”)
MsgBox („Witaj ” StrName & vbCrLf & „Miłego dnia!”)
End Sub
Ciepło Pozdrawiam 🙂
Kurs Bardzo mi się podoba 🙂 Jak dla mnie Bomba 🙂
Czarek, dzięki za info. Kod już poprawiony
Zadanie 4,1
Sub Zadanie4_1()
Dim Imie As String
Dim Naziwsko As String
Dim Wzrost As String
Dim Wiek As String
Imie = InputBox(„Wprowadź imię”)
Nazwisko = InputBox(„Wprowadź nazwisko”)
Wzrost = InputBox(„Wprowadź wzrost”)
Wiek = InputBox(„Wporwadź wiek”)
Range(„A1”) = Imie
Range(„A2”) = Nazwisko
Range(„A3”) = Wzrost
Range(„A4”) = Wiek
MsgBox („Dane zostały wprowadzone.”)
End Sub
Zadanie 4.2
Sub Zadanie4_2()
Dim Imie As String
Dim Naziwsko As String
Dim Wzrost As String
Dim Wiek As String
Imie = InputBox(„Wprowadź imię”, „Imię”, „Jan”, 23000, 13000)
Nazwisko = InputBox(„Wprowadź nazwisko”, „Nazwisko”, „Nowak”, 23000, 13000)
Wzrost = InputBox(„Wprowadź wzrost”, „Wzrost”, „180”, 23000, 13000)
Wiek = InputBox(„Wporwadź wiek”, „Wiek”, „35”, 23000, 13000)
MsgBox („Twoje imię:” & ” ” & Imie & vbCrLf & „Twoje nazwisko: ” & Nazwisko & vbCrLf & „Twój wzrost: ” & ” ” & Wzrost & ” ” & „cm” & vbCrLf _
& „Twój wiek:” & ” ” & Wiek & ” ” & „lat(a)”)
End Sub
Mała uwaga do: << Jak widzimy, łączenie fraz w VBA odbywa się przy użyciu znaku “&“. Zamiennie możemy tu zastosować także znak “+“. >> Ze znakiem „+” to nie jest prawda. Po wpisaniu „+” zamiast „&” oraz wykonaniu makra, pojawia się error 13 – Type mismatch.
Cześć,
wydaje mi się, choć mogę się mylić, że zmienna w Twoim kodzie ma inny typ danych niż string (świadczy o tym numer błędu). Sprawdź proszę, czy poniżej załączony kod działa u Ciebie. Ja oczywiście nie wykluczam błędu, natomiast ten przykład z plusami u mnie zadziałał. Pozdrawiam Tomasz
Sub BoxExample()
Dim StrName As String 'deklarujemy zmienną imię
StrName = InputBox(„Wprowadź swoje imię”) 'wprowadzamy wartość dla naszej zmiennej z okna InputBox
MsgBox („Witaj ” + StrName + vbCrLf + „Miłego dnia!”) 'prezentujemy komunikat
End Sub
Sub program()
Dim imie As String
Dim nazwisko As String
Dim wzrost As Integer
Dim wiek As Integer
Range(„c1”) = InputBox(imie, , „imie”, 23000, 13000)
Range(„c2”) = InputBox(nazwisko, , „nazwisko”, 23000, 13000)
Range(„c3”) = InputBox(wzrost, , „wzrost”, 23000, 13000)
Range(„c4”) = InputBox(wiek, , „wiek”, 23000, 13000)
MsgBox („Dane jakie zostały uzupełnione: ” & vbCrLf & Range(„c1”) & vbCrLf & Range(„c2”) _
& vbCrLf & Range(„c3”) & vbCrLf & Range(„c4”))
End Sub
Sub PracaDomowa5()
Dim strName As String
Dim strSurname As String
Dim strHeight As String
Dim strAge As String
Sheets(„Arkusz2”).Select
strName = (InputBox(„Podaj swoje imię:”, „Arkusz osobowy 1 z 4”, , 1850, 1000))
Range(„A1”) = strName
strSurname = (InputBox(„Podaj swoje nazwisko:”, „Arkusz osobowy 2 z 4”, , 1850, 1000))
Range(„A2”) = strSurname
strHeight = (InputBox(„Wprowadź swój wzrost:”, „Arkusz osobowy 3 z 4″, 180, 1850, 1000) & ” cm”)
Range(„A3”) = strHeight
strAge = (InputBox(„Podaj swój wiek:”, „Arkusz osobowy 4 z 4″, 20, 1850, 1000) & ” lat/lata”)
Range(„A4”) = strAge
MsgBox („Wprowadź…. Haha żartowałem. To już wszystko, dzięki!”)
MsgBox („Twoje dane to:” & vbCrLf & strName & ” ” & strSurname & vbCrLf & strHeight & vbCrLf & strAge)
End Sub
Cześć,
u mnie w xls 2016 inputbox nie działa – wymagana jest składnia „application.inputbox („dane”)” jakby się czasami ktoś zastanawiał co robi nie tak 😉
O widzisz. A ja sie glowilem czemu u mnie nie dzaiala. Dzeiki za info!
Sam kurs jest mega. Stawiam pierwsze kroki w VBA a dzieki temu kursowi stawiam te kroki pewniej:)
Ale juz wiem tez dlaczego tak sie u mnie dzialo. Nazwalem Modul jako InputBox i sie gryzlo bo excel traktowal komende w kodzie jako wlasnie ten modul. Przynajmniej tak mi sie wydaje 🙂
Sub lubic()
Dim imie As String
Dim nazwisko As String
Dim rok As String
Dim wzrost As String
imie = InputBox(„Podaj imię”, „Wiek”, „Grzesgorz”)
nazwisko = InputBox(„Podaj nazwisko”, „Nazwisko”, „Nowak”)
rok = InputBox(„Podaj rok urodzenia”, „rok”, „1990”)
wzrost = InputBox(„Podaj wzrost”, „wzrost”, „180 cm”)
Range(„J1”) = imie
Range(„J2”) = nazwisko
Range(„J3”) = rok
Range(„J4”) = wzrost
MsgBox „Twoje imię to: ” & imie & vbCrLf & „Twoje nazwisko to: ” & nazwisko & vbCrLf & „Twój wiek to: ” & Year(Date) – rok & vbCrLf & „Twoj wzrost: ” & wzrost
End Sub