Thema Datum  Von Nutzer Rating
Antwort
Rot ComboBox-Namen aus Array via Variable an eine "For each"-Schleife übergeben
26.05.2012 20:18:05 Wasserstoffoxid
NotSolved
27.05.2012 11:35:47 Help ?
NotSolved
27.05.2012 14:50:10 Wasserstoffoxid
NotSolved

Ansicht des Beitrags:
Von:
Wasserstoffoxid
Datum:
26.05.2012 20:18:05
Views:
1670
Rating: Antwort:
  Ja
Thema:
ComboBox-Namen aus Array via Variable an eine "For each"-Schleife übergeben

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot ComboBox-Namen aus Array via Variable an eine "For each"-Schleife übergeben
26.05.2012 20:18:05 Wasserstoffoxid
NotSolved
27.05.2012 11:35:47 Help ?
NotSolved
27.05.2012 14:50:10 Wasserstoffoxid
NotSolved