Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For Schleife Labels in Userform hinzufügen

Forumthread: For Schleife Labels in Userform hinzufügen

For Schleife Labels in Userform hinzufügen
11.09.2017 14:54:44
Tobi93
Liebe Excelianer,
leider komme ich bei meinem Projekt nicht weiter. Ich will eine For Schleife, die Label und später auch Textfelder erzeugt. Die Menge der Felder soll von einer Variable x bestimmt werden die vorher ausgewählt wird. Mein Code ist wie folgt:
Private Sub CommandButton1_Click()
Dim myLabel As MSForms.Control
Dim AbstandLabel As Integer
Dim i As Integer
MsgBox x
For i = 1 To x
Set myLabel = Vergleichsanlagen.Controls.Add("Forms.Label." & i, True)
With myLabel
AbstandLabel = 78 + (120 * (i - 1))
.Left = AbstandLabel
.Top = 18
.Width = 96
.Height = 18
End With
Next i
Vergleichsanlagen.Show
End Sub

Dieser steht in der Userform in der die Variable x bestimmt wird. Die Userform die mit x Labeln und Feldern generiert werden soll heißt "Vergleichsanlagen".
Beim laufen des Programms kommt es zur Fehlermeldung: "Ungültige Klassenzeichenfolge"
Falls jemand eine Idee hat was ich falsch mache wäre ich sehr dankbar!!! :)
Beste Grüße
Tobi
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 15:55:54
ChrisL
Hi Tobi
Private Sub CommandButton1_Click()
Dim myLabel As Object
Dim AbstandLabel As Integer
Dim i As Integer
x = 3
Load Vergleichsanlagen
For i = 1 To x
Set myLabel = Vergleichsanlagen.Controls.Add("Forms.Label.1", "Test" & 1, True)
With myLabel
.Caption = "Label" & i
AbstandLabel = 78 + (120 * (i - 1))
.Left = AbstandLabel
.Top = 18
.Width = 96
.Height = 18
End With
Next i
Vergleichsanlagen.Show
End Sub

cu
Chris
Anzeige
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 16:20:35
Tobi93
Vielen Dank dir Chris. Ich habe vergessen zu erwähnen, dass die Labels auf einer Multipage erstellt werden sollen. Muss ich das extra angeben? Die Labels werden jetzt zwar erstellt sind aber von der Multipage verdeckt.
Beste Grüße
Tobi
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 17:12:57
ChrisL
Hi
ungetestet...
Set myLabel = Vergleichsanlagen.MultiPage1.Pages(0).Controls.Add("Forms.Label.1", "Test" & i, True)
cu
Chris
Anzeige
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 17:36:09
Tobi93
Danke, Danke, Danke. Hast mir den Abend gerettet ;)
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 18:16:54
Daniel
Vielleicht auch folgender Workaround:
1. erstelle ein Label schon vorab im Editor an der passenden Stelle und setze die Hintergrundfarbe auf Transparent
2. füge jetzt in der Schleife diesem Label einfach nur noch die entsprechenden Captions hinzu, den abstand regelst du über hinzugefügte LineFeeds.
Passe zum Schluss noch die höhe des Labels entsprechend an:
die erste Caption setzt du noch vor der Schleife:
Label1.Caption = "Label1"
for i = 2 to x
Label1.Caption = Label1.Caption & String(6, vblf) & "Label" & i
Next
Label1.Height = 18 * (7 * (x - 1) + 1)
Gruß Daniel
Anzeige
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 16:32:13
Tobi93
Vielen Dank dir Chris. Ich habe vergessen zu erwähnen, dass die Labels auf einer Multipage erstellt werden sollen. Muss ich das extra angeben? Die Labels werden jetzt zwar erstellt sind aber von der Multipage verdeckt.
Beste Grüße
Tobi
AW: For Schleife Labels in Userform hinzufügen
11.09.2017 16:32:25
Tobi93
Vielen Dank dir Chris. Ich habe vergessen zu erwähnen, dass die Labels auf einer Multipage erstellt werden sollen. Muss ich das extra angeben? Die Labels werden jetzt zwar erstellt sind aber von der Multipage verdeckt.
Beste Grüße
Tobi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

For Schleife Labels in Userform hinzufügen


Schritt-für-Schritt-Anleitung

Um Labels in einer Userform mit einer For Schleife zu erzeugen, folge diesen Schritten:

  1. Userform erstellen: Stelle sicher, dass du eine Userform (z.B. "Vergleichsanlagen") in deinem Excel-Projekt hast.

  2. Hinzufügen eines CommandButtons: Füge einen CommandButton zur Userform hinzu, um das Skript auszuführen.

  3. Code einfügen: Verwende den folgenden VBA-Code, um Labels dynamisch zu erstellen:

    Private Sub CommandButton1_Click()
       Dim myLabel As MSForms.Control
       Dim AbstandLabel As Integer
       Dim i As Integer
       Dim x As Integer
       x = 3 ' Hier die Anzahl der Labels angeben
       For i = 1 To x
           Set myLabel = Vergleichsanlagen.Controls.Add("Forms.Label.1", "Label" & i, True)
           With myLabel
               .Caption = "Label" & i
               AbstandLabel = 78 + (120 * (i - 1))
               .Left = AbstandLabel
               .Top = 18
               .Width = 96
               .Height = 18
           End With
       Next i
       Vergleichsanlagen.Show
    End Sub
  4. Multipage anpassen: Wenn du die Labels auf einer Multipage erstellen möchtest, ändere die Zeile, die das Label hinzufügt, wie folgt:

    Set myLabel = Vergleichsanlagen.MultiPage1.Pages(0).Controls.Add("Forms.Label.1", "Label" & i, True)
  5. Testen: Führe die Userform aus und teste, ob die Labels wie gewünscht angezeigt werden.


Häufige Fehler und Lösungen

  1. Fehlermeldung "Ungültige Klassenzeichenfolge":

    • Lösung: Stelle sicher, dass du den richtigen Typ für das Label verwendest: "Forms.Label.1".
  2. Labels werden von der Multipage verdeckt:

    • Lösung: Achte darauf, dass du die Labels in der richtigen Multipage und auf der korrekten Seite hinzufügst, wie im obigen Beispiel.

Alternative Methoden

Eine mögliche Alternative besteht darin, ein Label bereits im Editor zu erstellen und dessen Hintergrundfarbe transparent zu setzen. Du kannst dann einfach die Captions in der Schleife anpassen:

Label1.Caption = "Label1"
For i = 2 To x
    Label1.Caption = Label1.Caption & vbLf & "Label" & i
Next
Label1.Height = 18 * (x)

Praktische Beispiele

Hier ist ein Beispiel, wie du die Anzahl der Labels dynamisch anpassen kannst. Angenommen, du möchtest die Anzahl der Labels basierend auf der Benutzereingabe festlegen:

Private Sub CommandButton1_Click()
    Dim x As Integer
    x = InputBox("Wie viele Labels möchtest du erstellen?")
    ' Der Rest des Codes bleibt gleich
End Sub

Tipps für Profis

  • Optimierung: Wenn du viele Labels erstellen musst, überlege, ob du die Labels in einer Sammlung speicherst, um später darauf zugreifen zu können.

  • Styling: Experimentiere mit den Eigenschaften der Labels (z.B. Schriftart, Hintergrundfarbe), um das Erscheinungsbild der Userform zu verbessern.

  • Fehlerbehandlung: Implementiere Fehlerbehandlung, um sicherzustellen, dass dein Code auch bei unerwarteten Eingaben robust bleibt.


FAQ: Häufige Fragen

1. Kann ich die Anzahl der Labels während der Laufzeit ändern?
Ja, du kannst die Variable x durch eine Benutzereingabe oder eine andere Logik dynamisch festlegen.

2. Wie kann ich die Labels gruppieren?
Du kannst entweder ein Frame oder eine GroupBox verwenden, um die Labels zu gruppieren und deren Layout zu organisieren.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in den meisten neueren Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und höher.

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