Freigeben über


Verweisen auf Registersteuerelementobjekte in VBA

Verwenden Sie ein Registerkartensteuerelement, um mehrere Seiten mit Informationen zu einem einzelnen Formular darzustellen. Ein Registerkartensteuerelement ist nützlich, wenn Ihr Formular Informationen enthält, die in mindestens zwei Kategorien sortiert werden können.

In den meisten Fällen funktioniert ein Registerkartensteuerelement wie andere Steuerelemente in einem Formular und kann als Member der Controls-Auflistung eines Formulars bezeichnet werden. Um beispielsweise auf ein Registerkartensteuerelement namens "TabControl1" auf einem Formular namens "Form1" zu verweisen, können Sie den folgenden Ausdruck verwenden:

Form1.Controls!TabControl1 

Da die Controls-Auflistung jedoch die Standardauflistung des Form-Objekts ist, müssen Sie nicht explizit auf die Controls-Auflistung verweisen. Sie müssen also den Verweis auf die Controls -Auflistung nicht im Ausdruck angeben, zum Beispiel:

Form1!TabControl1 

Weitere Informationen finden Sie in der Pages-Auflistung.

Ein Registerkartensteuerelement enthält mindestens eine Seite. Auf jede Seite in einem Registerkartensteuerelement wird als Mitglied der Pages-Auflistung des Registerkartensteuerelements verwiesen. Auf jede Seite in der Pages-Auflistung kann entweder durch die Einstellung der PageIndex-Eigenschaft (die die Position der Seite in der Auflistung ab 0 widerspiegelt) oder durch die Einstellung der Name-Eigenschaft der Seite verwiesen werden.

Es gibt keine Standardauflistung für das TabControl-Objekt . Wenn Sie also auf Elemente in der Pages-Auflistung anhand ihres Indexwerts oder auf Eigenschaften der Pages-Auflistung verweisen, müssen Sie explizit auf die Pages-Auflistung verweisen.

Wenn Sie beispielsweise den Wert der Caption-Eigenschaft für die erste Seite eines Registerkartensteuerelements namens TabControl1 ändern möchten, indem Sie auf dessen Indexwert in der Pages-Auflistung verweisen, können Sie die folgende Anweisung verwenden:

TabControl1.Pages(0).Caption = "First Page" 

Da jede Seite ein Mitglied der Controls-Auflistung des Formulars ist, können Sie auf eine Seite nur über die Name-Eigenschaft verweisen, ohne auf den Namen des Registerkartensteuerelements oder die Pages-Auflistung zu verweisen. Um beispielsweise den Wert der Caption-Eigenschaft einer Seite zu ändern und die Name-Eigenschaft auf "Page1" festzulegen, verwenden Sie die folgende Anweisung:

Page1.Caption = "First Page" 

Hinweis

Wenn ein Benutzer oder Code die PageIndex-Eigenschaft einer Seite ändert, ändern sich auch die Verweise auf den Index und auf die Position der Seite in der Seitenreihenfolge. Wenn Sie in diesem Fall einen absoluten Verweis auf eine Seite beibehalten möchten, verweisen Sie auf die Name-Eigenschaft der Seite.

Die Pages-Auflistung verfügt über eine Eigenschaft, Count, die die Anzahl der Seiten in einem Registerkartensteuerelement zurückgibt. Beachten Sie, dass diese Eigenschaft keine Eigenschaft des Registerkartensteuerelements ist, sondern der Pages -Auflistung, sodass Sie explizit auf die Auflistung verweisen müssen. Um beispielsweise die Anzahl der Seiten in "TabControl1" zu ermitteln, verwenden Sie die folgende Anweisung:

TabControl1.Pages.Count 

Verweisen auf die aktuelle Seite und Ändern der aktuellen Seite

Die Standardeigenschaft eines Registerkartensteuerelements ist Value, die eine ganze Zahl zurückgibt, die die aktuelle Seite identifiziert: 0 für die erste Seite, 1 für die zweite Seite usw. Die Value -Eigenschaft ist nur in VBA-Code und -Ausdrücken verfügbar. Durch Lesen der Value -Eigenschaft zur Laufzeit können Sie ermitteln, welche Seite sich aktuell ganz oben befindet. Die folgende Anweisung gibt beispielsweise den Wert für die aktuelle Seite von "TabControl1" zurück:

TabControl1.Value 

Hinweis

Da die Value-Eigenschaft die Standardeigenschaft für ein Registerkartensteuerelement ist, müssen Sie nicht explizit darauf verweisen. Aus diesem Grund können Sie .Value im vorherigen Beispiel weglassen.

Durch das Festlegen der Value-Eigenschaft eines Registerkartensteuerelements zur Laufzeit wird der Fokus auf die angegebene Seite geändert und diese Seite zur aktuellen Seite gemacht. Die folgende Anweisung verschiebt den Fokus auf die dritte Seite von "TabControl1":

TabControl1 = 2 

Dies ist nützlich, wenn Sie die Style-Eigenschaft eines Registerkartensteuerelements auf Keine festlegen (die keine Registerkarten anzeigt) und Befehlsschaltflächen im Formular verwenden möchten, um zu bestimmen, welche Seite den Fokus hat. Um eine Befehlsschaltfläche zum Anzeigen einer Seite zu verwenden, fügen Sie eine Ereignisprozedur zum OnClick -Ereignis der Schaltfläche hinzu, die die Value -Eigenschaft des Registerkartensteuerelements auf die ganze Zahl festlegt, die die entsprechende Seite identifiziert.

Durch Verwenden der Value-Eigenschaft mit der Pages-Auflistung können Sie Eigenschaften für die oberste Seite zur Laufzeit festlegen. Sie können beispielsweise die aktuelle Seite und alle Steuerelemente ausblenden, indem Sie die Visible -Eigenschaft der Seite auf False festlegen. Die folgende Anweisung blendet die aktuelle Seite von "TabControl1" aus:

TabControl1.Pages(TabControl1).Visible = False 

Jede Seite in einem Registerkartensteuerelement verfügt auch über eine PageIndex-Eigenschaft , die die Position einer Seite innerhalb der Pages-Auflistung angibt, indem dieselbe Nummerierungssequenz wie die Value-Eigenschaft des Registerkartensteuerelements verwendet wird: 0 für die erste Seite, 1 für die zweite Seite usw. Das Festlegen der PageIndex -Eigenschaft einer Seite ändert die Reihenfolge, in der Seiten im Registerkartensteuerelement eingeblendet werden. Wenn Sie zum Beispiel eine Seite namens "Page1" zur zweiten Seite machen möchten, verwenden Sie die folgende Anweisung:

Page1.PageIndex = 1 

Die PageIndex-Eigenschaft wird normalerweise beim Entwurf in den Eigenschaften einer Seite festgelegt. Sie können die Seitenreihenfolge auch festlegen, indem Sie mit der rechten Maustaste auf den Rahmen eines Registerkartensteuerelements klicken und dann im Kontextmenü auf Seitenreihenfolge klicken.

Verweisen auf Steuerelemente auf einer Registerkartensteuerelementseite

Die Steuerelemente, die Sie auf einer Registerkartensteuerelement-Seite platzieren, sind Teil der gleichen Auflistung wie alle Steuerelemente im Formular. Aus diesem Grund muss jedes Steuerelement auf einer Registerkartensteuerelement-Seite einen Namen haben, der bezüglich aller anderen Steuerelemente im gleichen Formular eindeutig ist. Verweisen Sie auf Steuerelemente auf einer Registerkartensteuerelementseite, indem Sie die gleiche Syntax für Steuerelemente in einem Formular ohne Registerkartensteuerelement verwenden.

Forms!Employees!HomePhone 

Da jedes Steuerelement in einem Formular eine eigene Controls-Auflistung hat, können Sie auf die Steuerelemente in einem Registerkartensteuerelement auch als Mitglieder der Controls-Auflistung verweisen. Der folgende Code listet beispielsweise alle Steuerelemente im Registerkartensteuerelement des Formulars "Employees" auf.

Sub ListTabControlControls() 
 
   Dim tabCtl As TabControl 
   Dim ctlCurrent As Control 
 
On Error GoTo ErrorHandler 
 
   ' Return reference to tab control on Employees form. 
   Set tabCtl = Forms!Employees!TabCtl0 
 
   ' List all controls on the tab control in the Debug window. 
   For Each ctlCurrent In tabCtl 
      Debug.Print ctlCurrent.Name 
   Next ctlCurrent 
 
   Set tabCtl = Nothing 
   Set ctlCurrent = Nothing 
 
   Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Sub

Außerdem hat jede Seite in einem Registerkartensteuerelement eine eigene Controls-Auflistung. Mithilfe der Controls-Auflistung einer Seite können Sie auf Steuerelemente auf den einzelnen Seiten verweisen. der folgende Code listet die Steuerelemente für jede einzelne Seite des Registerkartensteuerelements im Formular "Employees" auf.

Sub ListPageControls() 
 
   Dim tabCtl As TabControl 
   Dim pagCurrent As Page 
   Dim ctlCurrent As Control 
   Dim intPageNum As Integer 
 
On Error GoTo ErrorHandler 
 
   ' Return reference to tab control on Employees form. 
   Set tabCtl = Forms!Employees!TabCtl0 
 
   ' List all controls for each page on the tab control in the 
   ' Debug window. 
   For Each pagCurrent In tabCtl.Pages 
      intPageNum = intPageNum + 1 
      Debug.Print "Page " & intPageNum & " Controls:" 
      For Each ctlCurrent In pagCurrent.Controls 
         Debug.Print ctlCurrent.Name 
      Next ctlCurrent 
      Debug.Print 
   Next pagCurrent 
 
   Set tabCtl = Nothing 
   Set ctlCurrent = Nothing 
   Set pagCurrent = Nothing 
 
   Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
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.