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

VBA-Code in Userform aus Standardmodul aufrufen

Forumthread: VBA-Code in Userform aus Standardmodul aufrufen

VBA-Code in Userform aus Standardmodul aufrufen
12.11.2002 12:59:50
Björn
Hei all,

kann mir jemand kurz Nachhilfe im korrekten Referenzieren geben? Ich möchte einen in einer Userform hinterlegten VBA-Code aus einem Modul aufrufen und ernte bei allen Versuchen nur Laufzeitfehler. Versucht habe ich bereits:

Sub Makro1()
...

UserForms("NAME") & "!MAKRO2NAME"
MAKRO2NAME
Workbook.Name.Userforms(2) & "!MAKRO2NAME"

End Sub

Irgendwie so ähnlich :-( müßte der korrekte Referenzcode lauten... Hat jemand mal kurz einen Tipp?

Danke!!

Gruß

Björn

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA-Code in Userform aus Standardmodul aufrufen
12.11.2002 13:04:19
Michael Scheffler
Hallo,

UserForms kapseln genauso wie Klassen ihre Methoden und Daten. Der umgekehrte Weg geht und ist auch üblich, Du kannst in einem normalen Modul eine Function oder eine Sub als "Public" deklarieren, dann kannst Du sie aus der Form aus aufrufen.

Am besten ist es jedoch, wenn Du mehrfach gebrachte Unterprgramme in Klassenmodulen abspeicherst.

Viele Grüße

Micha

Anzeige
Re: VBA-Code in Userform aus Standardmodul aufrufen
16.11.2002 01:08:14
Björn
Hei Michael,

Danke für den Tipp. Ich wollte es grundsätzlich umgekehrt, also vom Modul aus in der Userform aufrufen. Aber auch das geht mit der Deklaration als Public. Danke für die Hilfe!

Gruß

Björn

;
Anzeige

Infobox / Tutorial

VBA-Code in Userform aus Standardmodul aufrufen


Schritt-für-Schritt-Anleitung

  1. Erstelle ein Standardmodul:

    • Öffne den VBA-Editor mit ALT + F11.
    • Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt.
    • Wähle „Einfügen“ > „Modul“.
  2. Definiere deine Subroutine:

    Public Sub MAKRO2NAME()
       MsgBox "Hallo aus dem Modul!"
    End Sub
  3. Erstelle eine Userform:

    • Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt.
    • Wähle „Einfügen“ > „Userform“.
  4. Füge einen Button zur Userform hinzu:

    • Ziehe einen Button auf die Userform und benenne ihn z.B. „btnRunMacro“.
  5. Füge den VBA-Code zum Button hinzu:

    Private Sub btnRunMacro_Click()
       Call MAKRO2NAME
    End Sub
  6. Starte die Userform:

    • Erstelle eine weitere Subroutine im Modul, um die Userform zu starten:
      Sub ShowUserForm()
      UserForm1.Show
      End Sub
  7. Führe ShowUserForm aus, um die Userform anzuzeigen und den Button zu testen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Überprüfe, ob die Subroutine als Public deklariert ist. Nur dann kannst du sie von der Userform aufrufen.
  • Fehler beim Aufruf der Userform:

    • Stelle sicher, dass der Name der Userform korrekt geschrieben ist. Beispiel: UserForm1.Show statt UserForms("UserForm1").Show.
  • Subroutine nicht gefunden:

    • Überprüfe die Rechtschreibung des Makronamens und dass es im Standardmodul definiert wurde.

Alternative Methoden

  • Verwendung von Klassenmodulen:

    • Statt Subroutinen in Standardmodulen zu verwenden, kannst du Methoden in Klassenmodulen definieren. Dies ermöglicht eine bessere Kapselung und Strukturierung des Codes.
  • Direktes Referenzieren:

    • Du kannst die Userform direkt in der Subroutine aufrufen, ohne eine Funktion zu verwenden:
      UserForm1.Show

Praktische Beispiele

  • Beispiel für ein einfaches Formular mit einem Textfeld:

    Public Sub ShowMessage()
       MsgBox "Die Eingabe war: " & UserForm1.TextBox1.Text
    End Sub
  • Userform mit mehreren Buttons:

    • Füge mehrere Buttons hinzu, die unterschiedliche Makros aus dem Modul aufrufen, um verschiedene Nachrichten anzuzeigen.

Tipps für Profis

  • Strukturierung des Codes:

    • Halte deinen Code modular. Verwende Public-Subroutinen in Standardmodulen, um die Wartbarkeit zu erhöhen.
  • Fehlerbehandlung einbauen:

    • Implementiere Fehlerbehandlung mit On Error-Anweisungen, um Laufzeitfehler elegant zu handhaben.
  • Benutzerdefinierte Funktionen in Userforms:

    • Du kannst auch benutzerdefinierte Funktionen direkt in Userforms anlegen, um spezifische Aufgaben zu erledigen.

FAQ: Häufige Fragen

1. Wie kann ich eine Subroutine aus einem anderen Modul aufrufen? Du kannst eine Subroutine aus einem anderen Modul aufrufen, indem du den Namen der Subroutine einfach mit Call gefolgt von dem Subroutinen-Namen verwendest.

2. Was ist der Unterschied zwischen Public und Private? Public bedeutet, dass die Subroutine von überall im Projekt aufgerufen werden kann. Private hingegen beschränkt den Zugriff auf das Modul, in dem die Subroutine definiert ist.

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