Office: (Office 365) VBA: Form in zwei Modulen verwenden

Helfe beim Thema VBA: Form in zwei Modulen verwenden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe ein VBA-Modul, von welchem ich ein Form aufrufe. Dieses Form hat einfach ein paar Buttons, und gibt zurück, ob ein Button... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von THG, 20. Dezember 2025 um 06:07 Uhr.

  1. THG
    THG User

    VBA: Form in zwei Modulen verwenden


    Hallo zusammen,

    ich habe ein VBA-Modul, von welchem ich ein Form aufrufe. Dieses Form hat einfach ein paar Buttons, und gibt zurück, ob ein Button gedrückt worden ist. Diese Information wird dann im Modul verarbeitet.

    Code:
    MeinForm.Show
    Das funktioniert auch. Ich habe jetzt allerdings ein weiteres Modul, welches auch auf das Form zugreifen soll.

    Leider bricht der Code im Form wie folgt ab, wenn der Button gedrückt wird:

    Code:
    Private Sub ToggleButton1.Click()
       If ToggleButton1.Value = True then Loeschen = True Else Loeschen = False
    End Sub
    
    Auf diese Variable möchte ich in beiden Modulen prüfen. Die Variable Loeschen ist in beiden Modulen als Public deklariert.

    Was kann ich machen, damit das funktioniert?
     
  2. THG
    THG User
    Ich glaube, es hat sich erledigt. Ich darf ja nur in einem Modul die Variablen deklarieren...

    Es hat sich aber gerade ein weiteres Problem ergeben. Ich rufe mit Call Hauptprogramm eine Sub auf, die dann mit den Variablen weiterarbeitet.

    Sub Hauptprogramm ist natürlich in beiden Modulen vorhanden, was Probleme bereitet. Wie mache ich das, dass nur in das aufrufende Modul zurückgesprungen will?

    Wenn also Modul1 das Form aufruft, soll Call Modul1.Hauptprogramm ausgeführt werden, wenn Modul2 das Form aufruft, soll Call Modul2.Hauptprogramm ausgeführt werden.
     
    Zuletzt bearbeitet: 20. Dezember 2025 um 06:37 Uhr
  3. RPP63_neu
    RPP63_neu Erfahrener User
  4. RPP63_neu
    RPP63_neu Erfahrener User

    VBA: Form in zwei Modulen verwenden

    Ist "Hauptprogramm" redundant (heißt doppelt vorhanden)?
    Falls ja, dann lösche eines.
    Falls nein, solltest Du unterschiedliche Namen verwenden.
    Wenn der Thread nicht endlos werden soll, könnte die Datei helfen.

    Gruß Ralf
     
    1 Person gefällt das.
  5. THG
    THG User
    Nein, ist nicht redundant. Eigentlich sind die ziemlich verschieden, aber das gleiche Form soll von beiden genutzt werden.

    Die Logik ist wie folgt:

    Formulare:
    Code:
    Private Sub CommandButton1_Click()
      Call Hauptprogramm
    End Sub
    
    Hier ist mein Problem. Sowohl Modul1.Intro als auch Modul2.Intro rufen MeinForm auf. Wenn CommandButton1 gedrückt wird, soll
    • Call Modul1.Hauptprogramm ausgeführt werden, wenn MeinForm aus Modul1 aufgerufen wird
    • Call Modul2.Hauptprogramm ausgeführt werden, wenn MeinForm aus Modul2 aufgerufen wird
    Könnte ich nicht einfach eine weitere globale Variable erstellen, die dann im Form abgefragt wird? Je nach aufrufendem Modul trägt die Variable den Wert "Modul1" oder "Modul2"

    Modul1:
    Code:
    Sub Intro()
      MeinForm.Show
    End Sub
    
    Sub Hauptprogramm
      ...
    End Sub
    
    Modul2:
    Code:
    Sub Intro()
      MeinForm.Show
    End Sub
    
    Sub Hauptprogramm
      ...
    End Sub
    
     
  6. Klaus-Dieter Erfahrener User
    Hallo,

    eine Beispieldatei, BITTE!
     
  7. RPP63_neu
    RPP63_neu Erfahrener User
    OK, jetzt glaube ich verstanden zu haben, was Du meinst.
    Wenn die beiden "Sub Hauptprogramm" nicht redundant sind …
    … dann verzichte auf die Kapselung als Sub() und schreibe den jeweiligen Code einfach in die jeweiligen Sub Intro()
    Modul1:
    Code:
    Sub Intro()
      MeinForm.Show
      ' Code von Hauptprogramm1
    End Sub
    Modul2:
    Code:
    Sub Intro()
      MeinForm.Show
      ' Code von Hauptprogramm2
    End Sub
     
  8. knobbi38 hat Ahnung

    VBA: Form in zwei Modulen verwenden

    Hallo THG,

    ohne deinen Programmablauf genau zu kennen, dürfte dieser so nicht ganz i.O. sein und den solltest du nochmal überdenken. Zum einen sollte es dem Hauptprogramm egal sein, von wo es aufgerufen wird und zum anderen sollte zwei unterschiedliche Programmteile auch verschiedene Bezeichner haben.

    Aber vielleicht hilft auch dieser Thread weiter:
    (Office 2019) - 1UFO für 2HFO
     
  9. THG
    THG User
    Ist vielleicht nicht elegant, hat aber geholfen. Ich glaube, der Ansatz wurde auch im verlinkten Thread vorgeschlagen.


    Formulare:
    Code:
    Private Sub CommandButton1_Click()
      If Aufruf = "Modul1" Then
       Call Modul1.Hauptprogramm
          Else Call Modul2.Hauptprogramm
    End Sub
    
    Modul1:
    Code:
    Sub Intro()
      Aufruf = "Modul1"
      MeinForm.Show
    End Sub
    
    Sub Hauptprogramm
      ...
    End Sub
    
    Modul2:
    Code:
    Sub Intro()
      Aufruf = "Modul2"
      MeinForm.Show
    End Sub
    
    Sub Hauptprogramm
      ...
    End Sub
    
     
    Zuletzt bearbeitet: 20. Dezember 2025 um 12:01 Uhr
  10. Klaus-Dieter Erfahrener User
    Hallo,

    fast bin ich sicher, dass es da bessere Möglichkeiten gibt. Aber da deine Datei offenbar geheim ist ...
     
  11. knobbi38 hat Ahnung
    und gleich als ungeeignet zurückgewiesen. Bei vernünftigem Workflow sollte das gar nicht notwendig sein.
     
Thema:

VBA: Form in zwei Modulen verwenden

Die Seite wird geladen...
  1. VBA: Form in zwei Modulen verwenden - Similar Threads - VBA Form Modulen

  2. Formen ein- und ausblenden per VBA

    in Microsoft Excel Hilfe
    Formen ein- und ausblenden per VBA: Hallo! Leider bin ich unter VBA ein blutiger Anfänger. Allerdings schaue ich mir im Netz schon ein paar Tutorials an und lese hier gerne mit. Nun möchte ich auf verschiedenen Tabellenblättern...
  3. Formen per VBA einfügen und formatieren

    in Microsoft Excel Hilfe
    Formen per VBA einfügen und formatieren: Hallo zusammen, ich habe einen VBA Code geschrieben, der für ein beliebiges Excel Workbook ein Inhaltsverzeichnis inkl. Verlinkungen auf die Blätter erstellt. So weit funktioniert das auch wie...
  4. Eingefügte Form (z.B. ein Rechteck) über VBA anspielen und beschriften

    in Microsoft Excel Hilfe
    Eingefügte Form (z.B. ein Rechteck) über VBA anspielen und beschriften: Hallo Zusammen, die Tabelle enthält eine eingefügte Form aus der Rubrik Formen unter Einfügen. Ich möchte gerne die Form über VBA "anspielen" und "Beschriften". Der Form einen Objekt-Namen kann...
  5. Form nach änderung per vba Speichern

    in Microsoft Access Hilfe
    Form nach änderung per vba Speichern: Hallo Zusammen, Ich update über eine Passthrough-query ziemlich viele Daten. Ich habe nun ein Label in meine "ImportView" Form eingebettet. Diese ändere ich mittels [Forms]!ImportView!Caption...
  6. Hintergrundfarbe eines Forms mit VBA ändern

    in Microsoft Access Hilfe
    Hintergrundfarbe eines Forms mit VBA ändern: Hallo, ich möchte die Hintergrundfarbe eines normalen Formulars ändern, wenn ein neuer Datensatz eingegeben wird. Me.Backcolour =... geht nicht. Weis jemand Rat? Vielen Dank! 97931
  7. User Form VBA

    in Microsoft Excel Hilfe
    User Form VBA: Hallo zusammen, ich habe zwei Fragen zu User-forms. 1. Ich habe ein User-Form in der Entwicklungsumgebung gestaltet. Wie bekomme ich dieses jetzt in eine Excel-Tabelle kopiert? Irgendwie...
  8. Formen in Platzhalter umwandeln?

    in Microsoft PowerPoint Hilfe
    Formen in Platzhalter umwandeln?: Hallo, Gibt es eine Möglichkeit, Formen in Bild-Platzhalter umzuwandeln? In Powerpoint finde ich dazu leider keine Möglichkeit... aber vielleicht mit nem Makro? Leider habe ich nur sehr wenig...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden