Kontrolki ActiveX – Pole tekstowe TextBox w Excel VBA 2


1. Budowa aplikacji do wprowadzania danych – Jak wstawić pole tekstowe TextBox (Formant ActiveX)

Pole tekstowe poznaliśmy już poprzedniej części naszego kursu. Pole służy nam przede wszystkim do wprowadzania danych, a następnie ich obróbki  edytorze VB. Wstawianie pola tekstowego TextBox zaczynamy od jego wybrania w karcie Developer spośród formantów ActiveX. Wprowadźmy do naszego arkusza 4 pola tekstowe kolejno nad kolumnami login, Imię, Nazwisko i e-mail. Najlepszym sposobem, by pola miały taki sam rozmiar jest utworzenie jednego pola tekstowego, a następnie jego powielenie. Utwórzmy także w naszym arkuszu jeden przycisk polecenia CommandButton o nazwie “Wprowadź” i osadźmy go nad kolumną ID. Samą nazwę możemy wpisać w polu Caption wybierając wcześniej właściwości przycisku.

Kurs Excel VBA - Pole tekstowe TextBox

Kurs Excel VBA – Pole tekstowe TextBox

2. Budowa aplikacji do wprowadzania danych – Programowanie pola tekstowego TextBox (Formant ActiveX)

Nasza aplikacja posiada już 4 pola tekstowe. Powinniśmy je teraz zaprogramować. Naszym celem jest napisanie programu, który po wprowadzeniu danych do pól wprowadzi je w odpowiednie kolumny naszego arkusza. Co ważne, chcielibyśmy, by dane były wprowadzane w kolejne wiersze naszej tabeli nie nadpisując istniejących już danych. Chcielibyśmy także, by loginy w naszej bazie nie mogły się powtarzać, a więc po wprowadzeniu istniejącego już w kolumnie loginu wyświetlało się okno MsgBox z odpowiednim komunikatem. Dodatkowo wprowadzimy prostą funkcjonalność, by w kolumnie Id pojawiały się zawsze kolejno narastające numery naszych rekordów. Tworzymy w naszym arkuszu przycisk polecenia. W pierwszej kolejności klikamy dwukrotnie w nasz przycisk “Wprowadź” w trybie projektowania. Możemy od razu wprowadzić kod, który uruchomi się po pojedynczym kliknięciu przycisku. Zwróćmy uwagę, że nie piszemy kodu w module, a w kodzie Arkusza danych.

2.1. Tworzenie narastających ID i  wprowadzanie danych z pól tekstowych

By każdy nasz rekord przyjmował coraz to wyższy numer w polu ID, powinniśmy tą funkcjonalność odpowiednio zaprogramować. Najprostszym sposobem jest jaka jest najwyższa wartość w kolumnie A.

Objaśnienie powyższego kodu:

  • Stworzyliśmy 2 zmienne o typie danych Single. Zmienna sngId odpowiada za kolejne numery naszych identyfikatorów ID. Zmienna sngWiersz określać będzie wiersz, który będzie aktualnie wypełniany wartościami
  • Korzystając z funkcji arkuszowej Max() w pierwszej kolejności określamy najwyższą wartość w kolumnie A i dodajemy do niej 1
  • Korzystając z funkcji arkuszowej CountA() zliczamy wypełnione wiersze w kolumnie A i dodajemy do nich liczbę 6, by zacząć wprowadzanie danych od 7 wiersza.
  • W bloku odpowiadającym za wprowadzanie danych wprowadzamy odpowiedni nr ID w odpowiedni wiersz
  • Kolejnym komórkom przypisujemy wartości z odpowiednich pól tekstowych, stosując funkcje zgodnie zvwymaganiami naszej aplikacji. Login piszemy z małych liter. Imię i nazwisko z wielkiej litery. Dodatkowo wartość zawarta w TextBox4 zamieniana jest na litery małe.
  • Program w obecnej formie upraszcza szukanie pierwszego niewypełnionego wiersza – zakłada, że pole ID nie może być puste. Jeśli jesteście zainteresowani trudniejszą konstrukcją, w której nie wszystkie wiersze muszą być zapełnione, odsyłam do artykułu o znajdywaniu ostatniego niepustego wiersza w Excel VBA.

2.1. Wprowadzanie unikalnych wartości w polu login

Nasz kod w obecnej formie zakłada, że loginy mogą się powtarzać. Zmodyfikujmy go w następujący sposób:

Jak widzimy w powyższym przykładzie dodaliśmy kolejną zmienną reprezentującą licznik (intLoginLicznik). Kod sprawdzający, czy login jest w bazie na początku sprawdza, czy login był już wprowadzony. Przy użyciu pętli przeszukuje wszystkie dane w kolumnie B i porównuje je z wartością wpisaną w TextBox1 zaczynając od wiersza nr 7. Jeśli login jest w bazie, za pomocą instrukcji GoTo program odsyła nas na sam koniec kodu (etykieta endlabel). Komunikat o istnieniu loginu w naszej bazie wyświetla się z atrybutem vbCritical. Jeśli loginu nie ma w bazie to nasz rekord zostaje wprowadzony. By sprawdzić działanie aplikacji wprowadźmy do pól tekstowych kilka przykładów.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

2 komentarzy do “Kontrolki ActiveX – Pole tekstowe TextBox w Excel VBA

  • Tomo G

    Formułę na nr wiersza można nieco uprościć i nie korzystać już z funkcji arkusza:

    ‘WYBIERANIE OSTATNIEGO NIEZAPISANEGO WIERSZA I NADAWANIE ID
    sngId = 1 + Application.WorksheetFunction.Max(Range(“A:A”))
    sngWiersz = 6 + sngID

  • Stan

    Sprawdzanie niepowtarzalności loginu u mnie nie działa, jeśli login składa się wyłącznie z cyfr (chyba dlatego, że lewa strona równania jest wówczas liczbą a prawa tekstem). Można np. dodać LCase i wówczas działa: If LCase(Cells(sngLoginLicznik, 2)) = LCase(TextBox1) Then..