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

Forumthread: Modul durch Commandbutton starten

Modul durch Commandbutton starten
23.09.2020 14:46:44
Herr
Hallo,
ich möchte gerne durch einen Klick auf einen CommandButton alle Anwesiungen aufführen, die ich in meine Userform eingepflegt habe. Allerdings schaffe ich es nicht, dass durch den Klick ein anderes Modul gestartet wird. Wenn ich den Befehl "Call Modul1" in meine Userform unter "Sub CommandButton1_Click()" schreibe, bekomme ich die Fehlermeldung "Prozedur oder Variable anstelle eines Moduls erwartet". Wer kann mir da weiterhelfen?
Danke und Gruß

Private Sub CommandButton1_Click()
'Eingaben aus Userform sollen übernommen werden
'Abfrage der Checkboxen
If meinFormular.Auswahl.Value = True Then
Sheets("Grunddaten").Range("Technischer_Support").Value = 1
End If
Call Modul1
'Eingabefenster schließen
Worksheets("Grunddaten").Activate
Unload meinFormular
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modul durch Commandbutton starten
23.09.2020 14:53:14
Rudi
Hallo,
du musst für jede Prozedur in Modul1 einen eigenen Aufruf erstellen.
Gruß
Rudi
Modul1 ist keine Prozedur
23.09.2020 14:57:49
NoNet
Hallo Herr V.,
standardmäßig versteht man unter Modul1 ja keine einzelne Prozedur, sondern ein "Container" (bzw. eine Sammlung) für eine oder mehrere zusammengehörige Prozeduren/Funktionen. Der Aufruf per Call IrgendEineProzedur erwartet, dass IrgendEineProzedur eine einzelne Prozedur und kein Modul ist !
Wenn Dein Modul1 also z.B. folgende Prozeduren enthält :
-

Sub IrgendEineProzedur()
End Sub
-

Sub EineAndereProzedur()
End Sub
-

Sub Test()
End Sub

Dann musst Du diese einzeln aufrufen :
Call IrgendEineProzedur
Call EineAndereProzedur
Salut, NoNet
Anzeige
AW: Modul1 ist keine Prozedur
23.09.2020 15:06:23
Herr
Entschuldigung, ich meine auch nicht Modul, sondern eine Prozedur. Da hab ich mich missverstä _ ndlich ausgedrückt. So sieht mein

Sub aus:

Sub Modul1()
For i = 4 To 148
If Sheets("Grunddaten").Cells(135, i).Value = 0 Then
Sheets("Grunddaten").Cells(135, i).EntireColumn.Hidden = True
End If
If Sheets("Grunddaten").Cells(135, i).Value = 1 Then
Sheets("Grunddaten").Cells(135, i).EntireColumn.Hidden = False
End If
Next
End Sub

Anzeige
AW: Modul1 ist keine Prozedur
23.09.2020 15:09:45
Rudi
dann musst du das Modul 'Modul1' umbenennen.
AW: Modul1 ist keine Prozedur
23.09.2020 15:13:50
Herr
Ach Danke! Jetzt geht es. Ist ja auch blöd von mir, Modul und Sub gleich zu benennen.
Danke und Gruß
AW: Modul durch Commandbutton starten
23.09.2020 15:14:34
Nepumuk
Hallo,
eine Prozedur darf nicht den Namen eines Moduls haben. Versuch es so:
Public Sub EinAusblenden()
    Dim i As Long
    With Worksheets("Grunddaten")
        For i = 4 To 148
            If .Cells(135, i).Value = 0 Then
                .Cells(135, i).EntireColumn.Hidden = True
            ElseIf .Cells(135, i).Value = 1 Then
                .Cells(135, i).EntireColumn.Hidden = False
            End If
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

CommandButton nutzen, um ein Modul in Excel VBA auszuführen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Userform: Öffne den VBA-Editor (Alt + F11) und füge eine neue Userform hinzu.
  2. Füge einen CommandButton hinzu: Ziehe einen CommandButton auf die Userform. Benenne ihn z.B. CommandButton1.
  3. Schreibe die CommandButton1_Click-Prozedur: Klicke doppelt auf den Button, um die Prozedur Private Sub CommandButton1_Click() zu erstellen.
  4. Modul erstellen: Erstelle ein neues Modul (Rechtsklick im Projekt-Explorer > Einfügen > Modul).
  5. Prozedur im Modul hinzufügen: Füge eine Prozedur in das Modul ein, z.B. Sub Modul1().
  6. Prozedur aufrufen: In der CommandButton1_Click-Prozedur rufe das Modul mit Call Modul1 auf.

    Beispiel für die CommandButton1_Click-Prozedur:

    Private Sub CommandButton1_Click()
       Call Modul1
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Prozedur oder Variable anstelle eines Moduls erwartet": Dies passiert, wenn du versuchst, das gesamte Modul anstelle einer spezifischen Prozedur aufzurufen. Stelle sicher, dass du den Namen einer Prozedur in deinem Modul verwendest.

  • Lösung: Benenne die Prozedur im Modul um, sodass sie nicht den gleichen Namen wie das Modul trägt. Z.B. von Sub Modul1() zu Sub EinAusblenden().


Alternative Methoden

  • Direktes Aufrufen von Prozeduren: Du kannst auch mehrere Prozeduren aus deinem Modul aufrufen, indem du sie nacheinander in der CommandButton1_Click-Prozedur aufrufst.

  • Verwendung von With-Anweisung: Dies kann den Code leserlicher machen und die Performance verbessern, besonders bei mehrfachen Zugriffen auf das gleiche Arbeitsblatt.

    Beispiel:

    Private Sub CommandButton1_Click()
       With Worksheets("Grunddaten")
           Call EinAusblenden
       End With
    End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie die Prozedur EinAusblenden in deinem Modul aussehen könnte:

Public Sub EinAusblenden()
    Dim i As Long
    With Worksheets("Grunddaten")
        For i = 4 To 148
            If .Cells(135, i).Value = 0 Then
                .Cells(135, i).EntireColumn.Hidden = True
            ElseIf .Cells(135, i).Value = 1 Then
                .Cells(135, i).EntireColumn.Hidden = False
            End If
        Next i
    End With
End Sub

Tipps für Profis

  • Verwende Public für Prozeduren: Wenn du deine Prozeduren im Modul für andere Teile des Projekts verfügbar machen willst, nutze Public anstelle von Private.

  • Benutze Fehlerbehandlung: Implementiere Fehlerbehandlung in deinen Prozeduren, um potenzielle Laufzeitfehler zu vermeiden. Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich mehrere Module aufrufen?
Du kannst mehrere Prozeduren aus verschiedenen Modulen aufrufen, indem du jeweils Call ModulName.ProzedurName verwendest.

2. Warum funktioniert mein CommandButton nicht?
Überprüfe, ob die Prozedur im Modul korrekt benannt ist und ob du den richtigen Namen in der CommandButton1_Click-Prozedur verwendest.

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