5.24 Wie kann ich den Index eines Optionsfeld-Array ermitteln?
VB4-VB6
Von: Michael Bayer
Es gibt keinen direkten Weg zu prüfen, welche Option bei einem Optionsfeld-Array gerade ausgewählt ist, außer alle Elemente in diesem Array zu durchlaufen und zu testen, ob deren Option.Value-Eigenschaft True ergibt.
Da die Indizes eines Control-Array lückenhaft sein können, bietet sich die For Each-Schleife für diese Aufgabe an:
Public Function GetSelectedOption(ByVal Options As Object, _
Optional ByVal Default As Integer = -1 _
) As Integer
Dim lCtl As Control
GetSelectedOption = -1
For Each lCtl In Options
If lCtl.Value Then
GetSelectedOption = lCtl.Index
Exit For
End If
Next
If GetSelectedOption = -1 And Default <> -1 Then
Options.Item(Default).Value = True
GetSelectedOption = Default
End If
End Function
Diese Funktion gibt den ausgewählten Index des Optionsfeld-Array zurück oder -1, wenn keine Auswahl vorhanden ist bzw. den Index der über den Parameter
Default eine Vorauswahl festlegt:
Private Sub Command1_Click()
Select Case GetSelectedOption(Me.Option1)
Case 0
'...
Case 1
'...
Case 2
'...
End Select
End Sub