Okno InputBox w Excel VBA 8


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.

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:

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.

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!

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

Kurs Excel VBA - Okno InputBox

Kurs Excel VBA – Okno InputBox

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:

Kurs Excel VBA - Funkcja InputBox

Kurs Excel VBA – Funkcja InputBox

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.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

8 komentarzy do “Okno InputBox w Excel VBA

  • Czarek

    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 🙂

  • Kuba

    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

  • Kotek

    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.

    • Tomasz Kenig Autor wpisu

      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

  • Rafał

    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

  • Marcin

    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

  • Jan

    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 😉