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 🙂