1. Budowa aplikacji do wprowadzania danych – Wstawianie Przycisku polecenia – CommandButton (Formant ActiveX)
Przycisk polecenia jest już nam znany. W najprostszej formie będzie nam służył do uruchamiania napisanych skryptów. Przycisk polecenia możemy osadzić zarówno w arkuszu Excela, jak i w formularzu UserForm. Jak wstawić przycisk polecenia CommandButton? Wchodzimy kolejno w zakładkę Developer, następnie wstaw Formanty ActiveX i wybieramy przycisk polecenia. Analogicznie postępujemy w przypadku formularza UserForm. Z okna ToolBox wybieramy kontrolkę CommandButton. W tym momencie nasza aplikacja zawiera jeden przycisk CommandButton o nazwie Wprowadź. Chcemy stworzyć kolejny przycisk służący do czyszczenia danych w formularzu. Wstawmy do naszego formularza drugi przycisk ActiveX – CommandButton. We właściwościach zmieńmy wartość w polu Caption na „Wyczyść”.

2. Budowa aplikacji do wprowadzania danych – Programowanie przycisku polecenia CommandButton (Formant ActiveX)
Przycisk programujemy klikając na niego dwukrotnie w trybie projektowania. Kod edytujemy w kodzie obiektu arkusza. W naszym wypadku będzie to Arkusz1. Dla naszego przycisku tworzymy kod kasujący wszystkie dane obecne w polach TextBox, ComboBox, OptionButton i CheckBox. Kod wygląda następująco:
Private Sub CommandButton2_Click() TextBox1 = "" TextBox2 = "" TextBox3 = "" TextBox4 = "" ComboBox1 = "" ComboBox2 = "" ComboBox3 = "" ComboBox4 = "" ListBox1 = "" OptionButton1 = False OptionButton2 = False CheckBox1 = False End Sub
W ten sposób zaprogramowałeś przycisk czyszczący dane w naszym formularzu. Kod programu w obiekcie Arkusz1 wygląda następująco:
Private Sub CommandButton1_Click() Dim sngId As Single Dim sngWiersz As Single Dim sngLoginLicznik As Single 'WYBIERANIE OSTATNIEGO NIEZAPISANEGO WIERSZA I NADAWANIE ID sngId = 1 + Application.WorksheetFunction.Max(Range("A:A")) sngWiersz = 6 + Application.WorksheetFunction.CountA(Range("A:A")) 'SPRAWDZANIE LOGINU sngLoginLicznik = 7 Do While sngLoginLicznik <= sngWiersz If Cells(sngLoginLicznik, 2) = LCase(TextBox1) Then MsgBox "Ten login znajduje się już w bazie, wprowadź inny", vbCritical GoTo endlabel End If sngLoginLicznik = sngLoginLicznik + 1 Loop 'WPROWADZANIE DANYCH Cells(sngWiersz, 1) = sngId Cells(sngWiersz, 2) = LCase(TextBox1) Cells(sngWiersz, 3) = UCase(Left(TextBox2, 1)) & LCase(Mid(TextBox2, 2)) Cells(sngWiersz, 4) = StrConv(TextBox3, vbProperCase) Cells(sngWiersz, 5) = LCase(TextBox4) Cells(sngWiersz, 6) = ComboBox1 Cells(sngWiersz, 7) = DateSerial(ComboBox4, ComboBox3, ComboBox2) Cells(sngWiersz, 8) = ListBox1 If OptionButton1 = True Then Cells(sngWiersz, 9) = "Kobieta" ElseIf OptionButton2 = True Then Cells(sngWiersz, 9) = "Mężczyzna" Else: Cells(sngWiersz, 9) = "" End If If CheckBox1 = True Then Cells(sngWiersz, 10) = "Tak" Else: Cells(sngWiersz, 10) = "Nie" End If endlabel: End Sub Private Sub CommandButton2_Click() 'KASOWANIE DANYCH Z FORMULARZA TextBox1 = "" TextBox2 = "" TextBox3 = "" TextBox4 = "" ComboBox1 = "" ComboBox2 = "" ComboBox3 = "" ComboBox4 = "" ListBox1 = "" OptionButton1 = False OptionButton2 = False CheckBox1 = False End Sub
3 komentarze “Kontrolki ActiveX – Przycisk polecenia CommandButton w Excel VBA”
Czy jest możliwość uruchomienia kodu po najechaniu na przycisk?
hmm… u mnie ListBox się nie czyści a nazwa i konstrukcja są identyczne.
dobry i szybki kurs VBA, po nim będę już tworzył swoje własne formularze 🙂