Nichts und niemand zwingt Sie dazu, ein Steuerelement-Array
lückenlos zu füllen - auch Visual Basic nicht. So können Sie
durchaus dem ersten Steuerelement des Arrays den Index 0
geben, und dem nächsten einen beliebigen anderen, etwa 100,
während die dazwischenliegenden Indices (von 1 bis
99) unbelegt bleiben.
Die Eigenschaften LBound
und UBound
eines Steuerelement-Arrays nützen Ihnen daher nichts, wenn Sie in
einer Schleife das Array durchlaufen und alle Elemente der Reihe
nach bearbeiten wollen - bei nicht geladenen Elementen des Arrays
würde ein Laufzeitfehler ausgelöst.
Dim i As Integer
For i = CtlArray.lbound To CtlArray.ubound
' Element CtlArray(i) bearbeiten...
Next 'i
Sie können jedoch ein Steuerelement-Array wie eine Collection
behandeln und somit in einer For...Each-Schleife alle
Elemente durchlaufen. Den Index des jeweiligen Steuerelements finden
Sie ja in dessen Index-Eigenschaft:
Dim Ctl As Control
For Each Ctl In CtlArray
Debug.Print Ctl.Index
Next
Wenn Sie jedoch feststellen möchten, ob ein bestimmtes Element
eines Steuerelement-Arrays geladen ist, geht dies nur über einen
kleinen Umweg. Sie versuchen, auf eine bei allen Steuerelementen
vorhandene Eigenschaft (in Visual Basic wäre dies etwa die
Tag-Eigenschaft) zuzugreifen und prüfen anschließend, ob ein
Laufzeitfehler ausgelöst worden ist. Wurde kein Laufzeitfehler
ausgelöst, ist das Steuerelement geladen. Die Hilfs-Funktion
IsCtlLoaded übernimmt für Sie die Prüfung, ob ein ihr als
Parameter übergebenes Steuerelement geladen ist.
Public Function IsCtlLoaded(Ctl As Control) As Boolean
Dim nTest As String
On Error Resume Next
nTest = Ctl.Tag
IsCtlLoaded = Not CBool(Err.Number)
End Function
 |
Die Funktion IsCtlLoaded prüft, ob ein
Element eines Steuerelement-Arrays geladen ist

|

|