POWRÓT

SEMESTR VI

Proste okno dialogowe


Spis treści rozdziału - tutaj kliknij

Wprowadzanie danych InputBox
Wyprowadzanie wyników MsgBox
Ćwiczenie - projekt

Źródła - Excel 2013 Pl, Programowanie VBA - John Walkenbach, VBA dla Excela 2010 Pl - Witold Wrotek, Excel 2013 Pl, programowanie w VBA dla Bystrzaków.


 

Wprowadzanie danych InputBox

     
   

  VBA pozwala na wyświetlanie kilku typów okien dialogowych, które z powodzeniem można używać zamiast formularzy UserForm. Takie wbudowane okna dialogowe można z pewnym zakresie dostosować do własnych potrzeb. Podstawowe to; MsgBox i InputBox
Do wprowadzania danych służy instrukcja InputBox. Umożliwia ona wyświetlenie okna dialogowego z polem do wpisywania informacji, wstrzymanie wykonywania programu do czasu wprowadzania przez użytkownika informacji i kliknięcia przycisku, przypisanie wartości zmiennej.

Uproszczona wersja składni wywołania funkcji MsgBox jest następująca;

InputBox(komunikat[.tytuł][.wartość_domyślna])
gdzie;

  • Komunikat - napis wyświetlany w oknie dialogowym (max 1024 znaki). Może zawierać znaki zmiany wiersza Chr(10) lub Chr(13), Możliwe jest również łączenie obu znaków (Chr(13) & Chr(10)),
  • tytuł - tekst, który zostanie wyświetlony na pasku tytułowym okna dialogowego (argument opcjonalny)
  • wartość_domyślna - domyślna wartość wyświetlana w oknie dialogowym (argument opcjonalny).

Jeżeli użytkownik w oknie dialogowym kliknie OK lub naciśnie ENTER, funkcja zwraca to, co wpisano w polu edycji,
Jeżeli użytkownik kliknie ANULUJ, funkcja zwraca łańcuch zerowej długości
Przykłady zastosowań funkcji InputBox.

Przykład 1

Sub przykład26()
  a = InputBox("Podaj dane teleadresowe", "Adresy", "Tutaj wpisz numer telefonu")
End Sub


Przykład 2 - funkcja obliczająca obwód i pole koła

Option Explicit
Sub PoleKoła()
  Dim r As Single, p As Single, ob As Single
  Const pi = 3.1415
  r = InputBox("Podaj promień koła", "POLE KOŁA")
  p = pi * r ^ 2: ob = 2 * pi * r
  MsgBox "Pole koła = " & p & Chr(13) _
  & "Obwód koła = " & ob
End Sub

Uwaga

  • pozioma kreska (znak podkreślenia) po Chr(13) w drugim przykładzie jest znakiem kontynuacji (oznacza, że dalszy ciąg tego wiersza jest kontynuowany w następnej linii).
  • Znak &, oznacza łączenie kilka tekstów w jeden ciąg.
    Przykładowy zapis moze wyglądać tak:

    Public Function FunkcjaLaczeTeksty(Tekst1, Tekst2) As String
    FunkcjaLaczeTeksty = Tekst1 & "-" & Tekst2
    End Function

    Wartością funkcji jest w tym przypadku ciąg składający się wartości zmiennej Tekst1 i Tekst2 przedzielonych myślnikiem. Zmienne wpisywane są bezpośrednio, natomiast konkretne wartości tekstowe (w przykładzie znak myślnika) - w cudzysłowiu.

    r = InputBox("Podaj promień koła", "POLE KOŁA")

    Okno Code z kodem procedury obliczajacej pole i obwód koła

    Do góry


 

Wyprowadzanie wyników MsgBox

     
   

  Do wyświetlania komunikatów służy funkcja MsgBox. Umożliwia ona; wyświetlanie okna komunikatu, wstyrzymanie wykonywania programu do czasu kliknięcia przycisku, zwrócenie liczby całkowitej (zmienna typu Integer) o wartości zależnej od klikniętego przycisku.
Ma ona następującą składnię;

zmienna = MsgBox(komunikat[,.przyciski][.tytuł][.plik_pomocy. kontekst])

gdzie;

  • Komunikat - łańcuch (napis) wyświetlany w oknie dialogowym (max 1024 znaki). Może zawierać znaki zmiany wiersza Chr(10) lub Chr(13)
  • Przyciski - wyrażenia numeryczne decydujace o tym, które przyciski i ikony pojawią się w oknie komunikatu,
  • Tytuł - napis wyświetlany na belce okna jako tytuł okna dialogowego (jeśli pominięty, brak tytułu)
  • Plik_pomocy, kontekst - plik i temat pomocy.

Elastyczność argumentu przyciski pozwala z łatwością dostosowywać okna komunikatów. Aby było to możliwe, opracowano wiele stałych, które mogą byc użyte w przypadku tego argumentu. Znając te stałe, można określić, które przyciski pojawią się, czy będzie widoczna ikona i jaki przycisk będzie domyślny. Na przykład;

  • stała vbOKOnly - wyświetla jedynie przycisk OK,
  • stała vbOKCancel - wyświetla przycisk OK i Anuluj,
  • stała vbQuestion - wyświetla ikonę pytania,
  • stala vbDefaultButton4 - domyślny jest czwarty przycisk.

Przykłady zastosowań funkcji MsgBox.

Przykład 1 - proste okno dialogowe

Sub przypisania()
  Dim x As String
  x = "- bardzo_dużą"
  Z = MsgBox("Zmienna x ma wartość " & x)
End Sub

Przykład 2 - dwa przyciski

Option Explicit
Dim x As Integer
  Sub okna()
  x = MsgBox("Komunikat", vbOKCancel, "Tytuł okna")
End Sub

Stałe odpowiadające przyciskom obsługiwanym przez funkcję MsgBox

Stała

Wartość

Opis

vbOkOnly

0

Wyświetl jedynie przycisk OK

VbOKCancel

1

Wyświetl przyciski OK i Cancel

VbAbortRetryIgnore

2

Wyświetl przyciski Przerwij, Ponów i Ignoruj

VbYesNoCancel

3

Wyświetl przyciski Tak, Nie i Anuluj

VbYesNo

4

Wyświetl przyciski Tak i Nie

VbRetryCancel

5

Wyświetl przyciski Ponów i Anuluj

VbCritical

16

Wyświetl ikonę Komunikat krytyczny

VbQuestion

32

Wyświetl ikonę Pytanie ostrzegające

VbExclamation

48

Wyświetl ikonę Komunikat ostrzegawczy

VbInformation

64

Wyświetl ikonę Komunikat informacyjny

VbDefaultButton1

0

Domyślnym przyciskiem jest przycisk pierwszy

VbDefaultButton2

256

Domyślnym przyciskiem jest przycisk drugi

VbDefaultButton3

512

Domyślnym przyciskiem jest przycisk trzeci

VbDefaultButton4

768

Domyślnym przyciskiem jest przycisk czwarty

VbApplicationModal

0

Okno modalne w aplikacji. Działanie bieżącej aplikacji zostanie wstrzymane, dopóki użytkownik nie odpowie na wyświetlony komunikat

VbSystemModal

4096

Okno modalne w systemie. Działanie wszystkich aplikacji zostanie wstrzymane, dopóki użytkownik nie odpowie na wyświetlony komunikat

VbMsgBoxHelpButton

16384

Wyświetla przycisk Pomoc

Option Explicit
Dim x As Integer
  Sub Czteryprzyciski()
  x = MsgBox("Czy chcesz zamknąć program?", vbQuestion + vbYesNoCancel + vbMsgBoxHelpButton + vbDefaultButton2, "Próba wyjścia z programu bez zapisania danych!")
  MsgBox x
End Sub

Ćwiczenie

  • Tutaj pobierz program pokazujący cztery przyciski o nazwie Tak, Nie, Anuluj, Pomoc. »»» 

Ćwiczenia

  • Tutaj pobierz program obliczający pole koła, określ przeznaczenie poszczególnych fragmentów kodu, dokonaj dowolnych zmian w kodzie, sprawdzając działanie programu. »»» 
  • Tutaj pobierz program zawierający podprogramy; biegacz, kolarz i podprogram główny. Podprogram główny wywołuje podprogramy biegacz i kolarz. Podprogram biegacz powoduje wyświetlenie okna dialogowego, które w polu edycji zawiera ciąg znaków. Podprogram kolarz powoduje wyświetlenie ciągu znaków wpisanego w polu edycji. Tutaj pobierz »»» 

Ćwiczenia do samodzielnego wykonania

1. Wyświetl w oknie Excela okno komunikatu, które będzie zawierało przycisk OK, a na pasku tytułu będzie widoczny napis Trening. Nad przyciskiem widoczny będzie napis Czyni mistrza

2. Napisz program, który będzie wyświetlał okno dialogowe. W pasku tytułu powinien znaleźć napis Witaj. Pod paskiem tytułu powinno ono wyświetlać treść Podaj imię, natomiast w polu edycji powinien byc wpisany tekst Tu wpisz swoje imię Po wpisaniu odpowiedzi i kliknięciu przycisku OK powinno zostać wyświetlone okno komunikatu. Nad przyciskiem powinien być widoczny tekst wprowadzony w polu edycji.

3. Napisz procedure, która zapyta o dwie dowolne liczby, doda je i wyświetli wynik.
MsgBox (liczba1 & " + " & liczba2 & " = " & suma)
Czy wynik jest prawidłowy??

Do góry


 

Ćwiczenie do wykonania

     
   

  Napisz program, który będzie wyświetlał kolejno okna dialogowe do wpisywania; nr lokalu, powierzchnia lokalu i zużycie wody. Wprowadzone dane będą umieszczane w kolejnych komórkach tego samego wiersza arkusza Excela. Po wpisaniu danych jednego lokalu, program powinien zapytać, czy wpisywać dane kolejnego lokalu.

  • Wyświetl okno Code
  • Skopiuj poniższy kod i wklej do okna Code,
  • Uruchom program i testuj.

Option Explicit
Sub woda()
Dim Lokal, Powierzchnia, Woda As String
Dim i, koniec As Integer
i = 2
Start:
Cells(i, 1).Select
Lokal = InputBox("Wpisz nr lokalu", "Lokal")
ActiveCell.Value = Lokal
Cells(i, 2).Select
Powierzchnia = InputBox("Wpisz powierzchnia lokalu", "Powierzchnia")
ActiveCell.Value = Powierzchnia
Cells(i, 3).Select
Woda = InputBox("Wpisz zuzycie wody", "Woda")
ActiveCell.Value = Woda
koniec = MsgBox("Kolejny lokal?", vbOKCancel, "Pytanie")
If koniec <> 1 Then GoTo xxx
i = i + 1
GoTo Start
xxx:
End Sub

  

Do góry


 

 (C) 2011 - 2018 Wydział Przyrodniczo - Techniczny KPSW. All Rights Reserved