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