Kontrolki ActiveX – Przycisk opcji OptionButton w Excel VBA

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.

Kurs Excel VBA - Przycisk Opcji OptionButton
Kurs Excel VBA – Przycisk Opcji OptionButton

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Komentarz do “Kontrolki ActiveX – Przycisk opcji OptionButton w Excel VBA”