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

Forumthread: Private Sub aus anderem Modul starten

Private Sub aus anderem Modul starten
25.01.2006 15:38:16
MartinM
Hallo Zusammen
Wieder einmal an meine Grenzen gestossen.
Habe eine Frage zu einem Private Sub Problem.
Damit nicht alle über "Makro ausführen" die Makros starten können, würde ich gerne die Makros auf Private setzen, danach kann ich aber die Makros nicht mehr mit anderen Makros aufrufen.
Habe es mit der Funktion Call versucht, ohne Glück.
Es sollten alle Makros unsichbar sein was mir aber nicht gelingt solange ich die Makros nicht in Makros aufrufenlassen kann.
Habe die Makros in verschiedenen Modulen gegliedert und desshald den Call Befehl so angewendet.
Beispiel:
Makro aus Modul Allgemein ruft das Makro SecureSave1 aus dem Modul Steuerung.
Call Steuerung.SecureSave1
Wie oder was muss ich anders machen? Mit Googeln komme ich nicht weiter.
VBA-Gruss MartinM
Der Weg ist das Ziel!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Private Sub aus anderem Modul starten
25.01.2006 15:49:03
Josef
Hallo Martin!
Deklariere die makros als Public und setze an den Anfang des Modules "Option Private Module", dann sind die Makros unter "Makro ausführen" nicht sichtbar!
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Private Sub aus anderem Modul starten
25.01.2006 16:14:41
MartinM
Hallo Sepp
Erneuten Dank an Dich.
Wer weiss, vielecht kann ich Dir einmal einen Dienst erweisen.
VBA-Gruss MartinM
Der Weg ist das Ziel!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Private Sub aus anderem Modul aufrufen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Private Sub aus einem anderen Modul in Excel VBA aufzurufen, musst du einige wichtige Schritte befolgen. Hier ist eine einfache Anleitung:

  1. Erstelle ein neues Modul: Öffne den VBA-Editor (Alt + F11) und füge ein neues Modul hinzu.

  2. Definiere deine Private Sub: Schreibe die Private Sub in dein Modul. Zum Beispiel:

    Private Sub SecureSave1()
       ' Dein Code hier
    End Sub
  3. Öffne ein anderes Modul: Gehe zu dem Modul, in dem du die Private Sub aufrufen möchtest.

  4. Verwende den Call-Befehl: Um die Private Sub aufzurufen, verwende den folgenden Code:

    Call Steuerung.SecureSave1

    Stelle sicher, dass du den Modulenamen (hier "Steuerung") und den Sub-Namen korrekt angibst.

  5. Setze Option Private Module: Am Anfang des Moduls, das die Private Sub enthält, kannst du Option Private Module hinzufügen. Dadurch wird das Makro im „Makro ausführen“-Dialog unsichtbar:

    Option Private Module

Häufige Fehler und Lösungen

  • Fehler: "Sub oder Function nicht definiert"
    Lösung: Überprüfe, ob der Modulname und der Sub-Name korrekt sind. Achte auf Schreibfehler.

  • Fehler: "Zugriff nicht möglich"
    Lösung: Stelle sicher, dass die Sub tatsächlich Private ist und nicht durch Public sichtbar gemacht wurde.

  • Fehler: Call funktioniert nicht
    Lösung: Überprüfe, ob die Private Sub im gleichen Projekt oder in einem anderen Modul deklariert ist. Private Subs können nur innerhalb des gleichen Moduls aufgerufen werden, wenn sie als Private deklariert sind.


Alternative Methoden

Wenn du Private Subs nicht direkt aufrufen kannst, gibt es einige alternative Methoden:

  • Verwende Public Subs: Wenn du nicht möchtest, dass dein Makro im „Makro ausführen“-Dialog sichtbar ist, deklariere sie als Public, aber nutze Option Private Module, um die Sichtbarkeit zu steuern.

  • Erstelle Wrapper-Funktionen: Du kannst Public Subs als Wrapper verwenden, die dann die Private Subs aufrufen.


Praktische Beispiele

Hier sind einige Beispiele, wie du Private Subs aus anderem Modul aufrufen kannst:

  1. Beispiel 1: Aufruf über einen Button

    Private Sub CommandButton1_Click()
       Call Steuerung.SecureSave1
    End Sub
  2. Beispiel 2: Aufruf innerhalb einer Schleife

    For i = 1 To 10
       Call Steuerung.SecureSave1
    Next i

Tipps für Profis

  • Verwende Fehlerbehandlung in deinen Subs, um sicherzustellen, dass dein Code auch bei unerwarteten Fehlern stabil bleibt.
  • Halte deine Module gut strukturiert, um die Übersichtlichkeit zu erhöhen. Vermeide zu viele Private Subs in einem Modul.
  • Nutze Kommentare in deinem Code, um anderen (oder dir selbst) das Verständnis zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich Private Subs aus einem anderen Workbook aufrufen?
Ja, aber dafür musst du sicherstellen, dass das Workbook geöffnet ist und du den richtigen Verweis auf das Modul verwendest.

2. Was ist der Unterschied zwischen Private Sub und Public Sub?
Private Subs sind nur innerhalb des Moduls sichtbar, während Public Subs von anderen Modulen und Workbooks aufgerufen werden können.

3. Wie kann ich überprüfen, ob ein Makro korrekt aufgerufen wird?
Füge Debug.Print oder MsgBox-Befehle in deine Private Sub ein, um zu sehen, ob sie ausgeführt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige