Liebe VBA-Expertinnen und Experten,
ein Problem mit ComboBoxen treibt mich in den Wahnsinn. Ich habe ein Worddokument entworfen, in welchem zahlreiche Comboboxen (ActiveX/MSForms-Elemente) eingebaut sind. Diese sollen mit dem Document_Open - Ereignis befüllt werden. Eine Untergruppe dieser Comboboxen (aber nicht alle!) wird mit gleichlautenden Einträgen gefüllt. Um den Code nicht noch unübersichtlicher zu machen, dachte ich mir, einfach die betreffenden ComboBox-Namen in einem Array zu speichern, und dieses per For each Schleife zu durchlaufen. Etwa so:
Private Sub Document_Open()
Dim KGCoB() As Variant
Dim kgi as variant
KGCoB() = Array("cb34421", "cb344211") 'Gekürzt, geplant sind 20 Einträge
For Each kgi In KGCoB()
With Me(kgi)
.addItem ("Erster Eintrag")
.addItem ("Zweiter Eintrag") 'Gekürzt, es folgen 3 weitere Einträge
End With
Next kgi
End Sub
Leider produziert der Compiler regelmäßig einen Fehler und moniert fehlende Argumente bzw. falsche Zuweisungen für Me(kgi). In der mir zur Verfügung stehenden Literatur (On- wie Offline) wird beschrieben, dass mit der einfachen Klammerschreibweise Variablen als Objektnamen übergeben werden können.
Was mache ich falsch?
Vermutung 1: kgi bzw. KGCoB() sind nicht "öffentlich" genug und können von Me. bzw. ActiveDocument. nicht verwendet werden, die Deklaration von Arrays bzw. Datenfeldern wie KGCoB() als public ist unter VBA aber wohl nicht zugelassen (?).
Vermutung 2: kgi muss eine String-Variable sein. Wenn ich diese aber mittels
With me(Cstr(kgi))
.addItem 'und so weiter...
End With
konvertiere, bleibt das Problem bestehen.
Habt Ihr vielleicht einen Hinweis, wo das Problem liegen könnte? Oder gibt es eine andere Lösung? Alle betroffenen ComboBoxen teilen z.B. den Namensbestandteil "Cb344".
Ich bin für jeden Hinweis dankbar!
Viele Grüße,
Wasserstoffoxid
|