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

Forumthread: VBA - Userform mit variable deklarieren

VBA - Userform mit variable deklarieren
02.08.2017 22:27:48
Christian
Guten Abend,
Ich habe folgendes Problem. Und ich durchsuche schon seit Stunden das Internet nach einer Lösung.
Also folgendes
Ich habe eine Userform, nennt sich Seite1.
Wenn ich diese aktiviere dann wird ein Befehl ausgeführt, der lautet
Füllen.Daten "Rechnung", 20
In dem Sub Daten im Modul Füllen steht dann:
sub daten(w as string, r as integer)
for i = 1 to 33
Seite1.Controls("CBArtikel" & i).Value = Worksheets("" & w).Range("B" & i + r).Value
next i

Die Ausführung klappt auch soweit.
Leider gibt es nicht nur die Userform Seite1 sondern auch Seite2, Seite3, Seite4.
Im Prinzip passiert beim Userform-Aufruf auf jeder Seite das Selbe, nur müsste z.B. bei Seite2 im Sub Daten stehen
Seite2.Controls("CBArtikel" & i).value .....
Jetzt meine Frage:
Kann ich die Userform als Variable deklarieren, so dass ich dann je nach dem welche seite ich öffne die richtige Userform ausgewählt wird.
Ich hoffe ihr versteht mein Problem und es kann mir jemand helfen.
Danke schon mal und noch einen schönen Abend.
Christian
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Userform mit variable deklarieren
03.08.2017 00:05:45
Mullit
Hallo,
klar geht:
Sub Daten(ByRef probjUserForm As Object, w As String, r As Integer)
Dim i As Long
For i = 1 To 33
probjUserForm.Controls("CBArtikel" & i).Value = Worksheets("" & w).Range("B" & i + r). _
Value
Next i
End Sub

Aufruf bspw. im Activate-Event:
Option Explicit
Private Sub UserForm_Activate()
Füllen.Daten Me, "Rechnung", 20
End Sub

Gruß, Mullit
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform in Excel VBA mit Variablen deklarieren


Schritt-für-Schritt-Anleitung

Hier erfährst du, wie du eine Userform in Excel VBA als Variable deklarieren kannst, um verschiedene Userforms flexibel zu nutzen.

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle eine Userform: Füge eine Userform hinzu, indem du mit der rechten Maustaste auf das Projekt klickst, dann Einfügen und Userform wählst.

  3. Definiere das Sub: Erstelle ein Sub, das die Userform als Parameter entgegennimmt. Hier ist ein Beispiel:

    Sub Daten(ByRef probjUserForm As Object, w As String, r As Integer)
       Dim i As Long
       For i = 1 To 33
           probjUserForm.Controls("CBArtikel" & i).Value = Worksheets(w).Range("B" & i + r).Value
       Next i
    End Sub
  4. Aktiviere die Userform: Im Activate-Event der Userform rufst du das Sub auf:

    Private Sub UserForm_Activate()
       Füllen.Daten Me, "Rechnung", 20
    End Sub
  5. Variablen definieren: Stelle sicher, dass du die Variablen in deinem Sub korrekt deklarierst, um den Überblick zu behalten.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Überprüfe, ob die Controls auf deiner Userform die richtigen Namen haben. Der Fehler tritt auf, wenn das Control mit dem angegebenen Namen nicht existiert.

  • Fehler: „Typ nicht definiert“
    Lösung: Achte darauf, dass du die Variablen in deinem Sub korrekt definierst. Wenn du z.B. Dim i As Long vergisst, wird dieser Fehler angezeigt.


Alternative Methoden

Falls du keine Userform-Variablen verwenden möchtest, kannst du auch direkt die Userform-Namen in deinen Code einfügen, was jedoch weniger flexibel ist. Eine Alternative wäre die Verwendung von Array- oder Collection-Objekten, um mehrere Userforms zu verwalten.


Praktische Beispiele

Hier sind einige Beispiele, wie du die Userform in unterschiedlichen Szenarien einsetzen kannst:

  1. Daten von verschiedenen Worksheets abrufen: Nutze die gleiche Methode, um Daten aus verschiedenen Worksheets in die Userform zu laden, indem du den Namen des Worksheets dynamisch übergibst.

    Füllen.Daten Seite1, "Rechnung", 20
    Füllen.Daten Seite2, "Bestellung", 10
  2. Verschiedene Userforms gleichzeitig verwenden: Du kannst denselben Sub für verschiedene Userforms nutzen, indem du nur den Userform-Namen änderst.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was viele Fehler verhindert.
  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um sicherzustellen, dass deine Logik funktioniert, bevor du die Userform öffnest.
  • Dokumentation: Halte deine Codekommentare aktuell, um den Überblick zu behalten, insbesondere wenn du mit vielen Userforms arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Userforms in einem Projekt verwalten?
Du kannst für jede Userform ein separates Modul erstellen und die gemeinsame Logik in einem zentralen Modul speichern.

2. Was ist der Unterschied zwischen ByRef und ByVal?
ByRef übergibt eine Referenz auf die Variable, sodass Änderungen innerhalb des Subs auch außerhalb sichtbar sind. ByVal übergibt eine Kopie der Variable, Änderungen bleiben lokal.

3. Kann ich auch andere Control-Typen in der Userform verwenden?
Ja, du kannst verschiedene Control-Typen wie TextBoxen, Labels und ComboBoxen verwenden. Die Logik bleibt ähnlich; achte jedoch darauf, die richtigen Control-Namen zu verwenden.

4. Wie kann ich die Userform schließen, nachdem die Daten geladen wurden?
Du kannst die Methode Unload Me verwenden, um die Userform zu schließen, sobald die Daten geladen sind.

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