1. Budowa aplikacji do wprowadzania danych – Wstawianie Przycisku opcji OptionButton (Formant ActiveX)
Chcielibyśmy, by w kolumnie „I” naszej tabeli z danymi wprowadzane były dane dotyczące płci, a więc wartość Kobieta lub Mężczyzna. W tym wypadku powinniśmy skonstruować naszą aplikację w ten sposób, by uniemożliwić zaznaczenia obydwu opcji jednocześnie. Najlepszym sposobem, by to zrobić jest wykorzystanie przycisku opcji OptionButton. Jak wstawić przycisk opcji OptionButton? Spośród formantów ActiveX w zakładce Developer wybierzmy dwie kontrolki Przycisku opcji. Wstawmy je nad kolumną „I”. Wchodząc we właściwości kontrolek poprawmy dla nich kolejno wartości w polach Caption na wyrazy „Kobieta” dla OptionButton1 i „Mężczyzna” dla OptionButton2. Warto zaznaczyć, że inna spotykana nazwa przycisku opcji to RadioButton.
2. Budowa aplikacji do wprowadzania danych – Programowanie Przycisku opcji OptionButton (Formant ActiveX)
Przyciski OptionButton są już osadzone w naszej aplikacji. W jaki sposób możemy zaprogramować przyciski opcji OptionButton? W bloku kodu odpowiadającym za wprowadzanie danych powinniśmy wprowadzić instrukcję warunkową If Then Else. Poniżej fragment kodu:
If OptionButton1 = True Then Cells(sngWiersz, 9) = "Kobieta" ElseIf OptionButton2 = True Then Cells(sngWiersz, 9) = "Mężczyzna" Else: Cells(sngWiersz, 9) = "" End If
Jak widzisz, wprowadziliśmy do naszej instrukcji element ElseIf. Kod został zapisany w ten właśnie sposób, gdyż możemy się spotkać z sytuacją, gdy żadna opcja nie zostanie zaznaczona. Zaznaczony przycisk opcji przyjmuje w VBA wartość True. Odznaczony wartość False. Kod naszego programu w obiekcie Arkusz1 wygląda teraz 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 endlabel: End Sub
Komentarz do “Kontrolki ActiveX – Przycisk opcji OptionButton w Excel VBA”
bardzo fajny artykuł, dzięki