Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Me.Controls.Add

Forumthread: Me.Controls.Add

Me.Controls.Add
21.10.2013 16:04:57
Alex
Hallo zusammen!
Ich hoffe ihr könnt mir weiterhelfen. Irgendwie will das neue Office den Befehl Me.Controls.Add nicht ausführen.
Dim weitereKst As MSForms.CheckBox
For j = 2 To i
Set weitereKst = Me.Controls.Add("Forms.CheckBox.1")
With weitereKst
.Left = 0
.Top = w + 20
.Width = 220
.Caption = Cells(j, 1)
End With
Ich bekomme den Fehler (.Controls wird markiert):
Methode oder Datenobjekt nicht gefunden
In einer alten Excel-Version hat das noch funktioniert.
Grüße
Alex

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Auf was bezieht sich Me. ? (owT)
22.10.2013 17:29:22
EtoPHG

AW: Auf was bezieht sich Me. ? (owT)
24.10.2013 11:04:36
Alex
me sollte sich auf die Userform die geöffnet wird beziehen.
Hab ich vergessen zu kopieren.
Hier mal der ganze Code:
Private Sub KSTdel_Click()
Dim i As Integer
Dim j As Integer
Dim weitereKst As MSForms.CheckBox
Dim KstNr As MSForms.Label
Dim w As Long
w = 0
i = Worksheets("Datenbank").Range("A:A").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox i
KSTdelUF.Show
KSTdelUF.Height = i * 20
For j = 2 To i
Set weitereKst = KSTdelUF.Controls.Add("Forms.CheckBox.1")
With weitereKst
.Left = 0
.Top = w
.Width = 220
.Caption = Worksheets("Datenbank").Cells(j, 1)
End With
w = w + 20
Next
End Sub
Ich habe me hier mit KSTdelUf (Name der Userform) ersetzt, nur funktioniert der Code dann teilweise nicht. Manchmal gibt eine komplett leere Userform zurück. Hab den Grund mal irgendwo gelesen, dass man dann eben me nehmen soll, aber dann kann ich .controls.add nicht verwenden.

Anzeige
AW: Auf was bezieht sich Me. ? (owT)
25.10.2013 08:59:25
EtoPHG
Hallo Alex,
Me bezieht sich immer auf die Codeklasse, sprich:
In DieserArbeitsmappe: auf das Workbook
In Module(n) : auf nichts, d.h. hier ist Me nicht anwendbar!
In TabelleX : auf das Worksheet
In Formulare(n) : auf die UserForm
Wenn du weiterhin Probleme hast: Lade eine Beispielmappe hoch!
Gruess Hansueli
Anzeige
;
Anzeige

Infobox / Tutorial

Me.Controls.Add in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um in Excel VBA mit Me.Controls.Add zu arbeiten, befolge diese Schritte:

  1. Öffne die Userform: Erstelle oder öffne eine bestehende Userform in deinem VBA-Projekt.
  2. Füge ein Modul hinzu: Gehe zu Einfügen > Modul, um einen neuen Codebereich zu erstellen.
  3. Code einfügen: Verwende den folgenden Code, um eine Checkbox dynamisch zur Userform hinzuzufügen:
    Private Sub KSTdel_Click()
       Dim i As Integer
       Dim j As Integer
       Dim weitereKst As MSForms.CheckBox
       Dim w As Long
       w = 0
       i = Worksheets("Datenbank").Range("A:A").Cells(Rows.Count, 1).End(xlUp).Row
       KSTdelUF.Show
       KSTdelUF.Height = i * 20
       For j = 2 To i
           Set weitereKst = Me.Controls.Add("Forms.CheckBox.1")
           With weitereKst
               .Left = 0
               .Top = w
               .Width = 220
               .Caption = Worksheets("Datenbank").Cells(j, 1)
           End With
           w = w + 20
       Next
    End Sub
  4. Testen: Führe den Code aus und stelle sicher, dass die Checkboxen korrekt hinzugefügt werden.

Häufige Fehler und Lösungen

  1. Fehlermeldung: Methode oder Datenobjekt nicht gefunden

    • Lösung: Stelle sicher, dass der richtige Kontext mit Me.Controls verwendet wird. In Userforms muss Me auf die Userform verweisen.
  2. Leere Userform

    • Lösung: Überprüfe, ob der Code korrekt auf Me.Controls.Add verweist und ob die Daten in der angegebenen Excel-Tabelle tatsächlich vorhanden sind.
  3. Verwendung von KSTdelUF statt Me

    • Lösung: Behalte Me im Code, da dies auf die aktuelle Userform verweist. Der Name der Userform sollte nicht in Controls.Add verwendet werden.

Alternative Methoden

Falls Me.Controls.Add nicht funktioniert oder du eine andere Methode ausprobieren möchtest, kannst du die folgenden Alternativen verwenden:

  • Direkte Referenzierung: Statt Me.Controls.Add kannst du die Userform direkt referenzieren:

    Set weitereKst = KSTdelUF.Controls.Add("Forms.CheckBox.1")
  • Verwendung von UserForm.Controls: Mit dieser Methode kannst du auch auf Steuerelemente zugreifen, die nicht über Me angesprochen werden, jedoch ist es weniger flexibel.


Praktische Beispiele

Hier sind einige nützliche Beispiele, wie Me.Controls.Add in verschiedenen Szenarien verwendet wird:

  • Checkboxen für eine Umfrage:

    Private Sub AddCheckboxes()
       Dim chk As MSForms.CheckBox
       Set chk = Me.Controls.Add("Forms.CheckBox.1")
       With chk
           .Caption = "Umfrageoption"
           .Top = 10
           .Left = 10
       End With
    End Sub
  • Dynamische Buttons:

    Private Sub AddButtons()
       Dim btn As MSForms.CommandButton
       Set btn = Me.Controls.Add("Forms.CommandButton.1")
       With btn
           .Caption = "Klick mich!"
           .Top = 50
           .Left = 10
       End With
    End Sub

Tipps für Profis

  • Verwende With-Anweisungen: Dies erhöht die Lesbarkeit und Performance deines Codes, da du die Eigenschaften eines Steuerelements in einem Block festlegen kannst.

  • Vermeide magische Zahlen: Nutze Konstanten oder Variablen für Positionen und Größen, um den Code flexibler zu gestalten.

  • Debugging: Verwende Debug.Print oder MsgBox, um den aktuellen Status oder Fehler zu überwachen, während du den Code testest.


FAQ: Häufige Fragen

1. Was bedeutet Me in VBA?
Me bezieht sich auf die aktuelle Instanz der Klasse, in der der Code ausgeführt wird. Bei Userforms ist es die Userform selbst.

2. Warum funktioniert Me.Controls.Add nicht auf meinem Excel?
Möglicherweise verwendest du eine falsche Version von Excel oder hast den Kontext nicht richtig gesetzt. Stelle sicher, dass du dich in einer Userform befindest.

3. Kann ich Steuerelemente auch ohne Me hinzufügen?
Ja, du kannst die Userform direkt referenzieren, jedoch ist die Verwendung von Me in der Regel die bessere und flexiblere Wahl.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige