Festlegen der Aktivierreihenfolge von Steuerelementen in einem Frame
Im folgenden Beispiel wird die TabIndex -Eigenschaft verwendet, um die Aktivierreihenfolge für einzelne Steuerelemente anzuzeigen und festzulegen. Die TabIndex -Eigenschaft gehört zu Microsoft Forms 2.0 und gilt für jedes Steuerelement, das in einem Frame -Objekt vorhanden sein kann. Der Benutzer kann TAB drücken, um das nächste Steuerelement in der Aktivierreihenfolge zu aktivieren und die TabIndex -Eigenschaft dieses Steuerelements anzuzeigen. Außerdem kann der Benutzer auf ein beliebiges Steuerelement außer einem TextBox - oder ScrollBar -Steuerelement klicken, um dessen TabIndex -Eigenschaft anzuzeigen. Der Benutzer kann den TabIndex eines Steuerelements ändern, indem er einen neuen Indexwert im Textfeld angibt und auf CommandButton3 klickt. Durch die Änderung des TabIndex für ein Steuerelement werden auch die TabIndex -Elemente der anderen Steuerelemente im Frame aktualisiert.
To use this example, copy this sample code to the Script Editor of a form. To run the code you need to open the form so the Open event will activate. Make sure that the form contains:
Ein Bezeichnungsfeld-Steuerelement ( Label ) mit der Bezeichnung "Label1".
A TextBox named TextBox1.
Ein Rahmen-Steuerelement ( Frame ) mit der Bezeichnung "Frame1".
A TextBox in the Frame named TextBox2.
Zwei CommandButton -Steuerelemente im Frame -Objekt mit der Bezeichnung "CommandButton1" und "CommandButton2".
A ScrollBar in the Frame named ScrollBar1.
Ein CommandButton-Element (nicht im Frame) mit der Bezeichnung "CommandButton3".
Sub MoveToFront()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Temp = Frame1.ActiveControl.TabIndex
For i = 0 To Temp - 1
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = 0
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton3_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
If IsNumeric(TextBox1.Text) Then
Temp = CInt(TextBox1.Text)
If Temp >= Frame1.Controls.Count Or Temp < 0 Then
'Entry out of range; move control to front of tab order
MoveToFront
ElseIf Temp > Frame1.ActiveControl.TabIndex Then
'Move entry down the list
For i = Frame1.ActiveControl.TabIndex + 1 To Temp
Frame1.Controls.Item(i).TabIndex = i - 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
Else
'Move Entry up the list
For i = Frame1.ActiveControl.TabIndex - 1 To Temp
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
End If
Else
'Text entry; move control to front of tab order
MoveToFront
End If
End Sub
Sub Item_Open()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Set Label1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Label1")
Set CommandButton3 = Item.GetInspector.ModifiedFormPages("P.2").Controls("CommandButton3")
Label1.Caption = "TabIndex"
Frame1.Controls(0).SetFocus
TextBox1.Text = Frame1.ActiveControl.TabIndex
Frame1.Cycle = 2 '2=fmCycleCurrentForm
CommandButton3.Caption = "Set TabIndex"
CommandButton3.TakeFocusOnClick = False
End Sub
Sub CommandButton1_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton2_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.