Freigeben über


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.