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

Forumthread: Private Sub per Makro aufrufen?

Private Sub per Makro aufrufen?
Frank
Hallo zusammen!
In einer Arbeitsmappe benutze ich einige Formularelemente aus der Steuerelemente-Toolbox. Unter anderem einen Spin-Button.
Durch Betätigung des Buttons wird eine Routine gestartet (Private Sub SpinButton1_SpinUp()).
Besteht die Möglichkeit diese Routine nicht nur durch Betätigung des Buttons, sondern auch aus einem Makro heraus zu starten (mit "Call SpinButton1_SpinUp" funktioniert es leider nicht), das in einem "normalen" Modul steht?
Vielen Dank,
Frank
Anzeige
Schreib doch den Code ins andere Makro ...
22.06.2010 08:59:45
Matthias
Hallo
Schreib doch den Code von Private Sub SpinButton1_SpinUp()
in Dein anderes Makro
oder verstehe ich da was falsch ?
Gruß Matthias
AW: Schreib doch den Code ins andere Makro ...
22.06.2010 09:01:32
Frank
Hallo Matthias,
dann wird aber die Linked-Cell des Steuerelements nicht gefüllt...und das soll passieren.
Geht so ein Aufruf, wie ich ihn benötige nicht?
Gruß,
Frank
Anzeige
ja...
22.06.2010 09:04:09
Oberschlumpf
...so ein Aufruf geht nicht.
Hi Frank
am Besten wäre, wenn du uns (d)eine Bsp-Datei zeigst.
Ciao
Thorsten
füll doch die "LinkedCell"- Adresse als ob Du ...
22.06.2010 09:14:10
Matthias
Hallo
... den Button(SpinButton1_SpinUp) drücken würdest.
Wer soll denn das nachvollziehen, wenn keiner eine Bsp.Datei mit dem Code zur Verfügung hat.
Gruß Matthias
Anzeige
AW: füll doch die "LinkedCell"- Adresse als ob Du ...
22.06.2010 09:33:26
Frank
so funktioniert es. dankeschön! nächstes mal gibt's eine beispieldatei...
vg,
frank
AW: Private Sub per Makro aufrufen?
22.06.2010 09:00:26
IngGi
Hallo Frank,
verlagere den Code aus der Ereignisprozedur SpinButton1_SpinUp() in eine normale Prozedur. Diese kannst du dann sowohl aus der Ereignisprozedur, als auch aus jeder anderen Prozedur aufrufen.
Gruß Ingolf
Anzeige
AW: Private Sub per Makro aufrufen?
22.06.2010 09:01:20
Oberschlumpf
Hi Frank
1. Verschiebe den Code, der direkt im SpinUp-Ereignisses des SpinButtons geht, in ein Sub im allgemeinen Modul.
2. Ersetze den Code, der vorher im SpinUp-Ereignis stand, durch den Namen des neuen Sub's.
Nun werden die Befehle in beiden Fällen ausgeführt.
Klickst du auf den SpinButton für SpinUp, verzweigt der dort stehende Sub-Name in den verschobenen Code.
Und nun kannst du dieses Sub auch von jeder anderen Stelle aufrufen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Private Sub per Makro aufrufen?
22.06.2010 09:03:06
Frank
aber die linked cell, die beim betätigen des buttons gefüllt wird, wird dann nicht mehr verändert, oder täusche ich mich?
Steuerelement VBA oder Formular
22.06.2010 09:05:36
ChrisL
Hi Frank
Nimm ein VBA Steuerelement, dann funktioniert m.W. auch der Code.
cu
Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Private Sub per Makro aufrufen


Schritt-für-Schritt-Anleitung

Um einen Private Sub in Excel über ein Makro auszulösen, kannst du folgende Schritte befolgen:

  1. Code verschieben: Übertrage den Code aus der Private Sub SpinButton1_SpinUp() in eine normale Sub-Prozedur in einem allgemeinen Modul.

    Beispiel:

    Sub MainProcedure()
       ' Dein Code hier
    End Sub
  2. Ereignisprozedur anpassen: In der SpinButton1_SpinUp()-Ereignisprozedur rufst du nun die neue Prozedur auf:

    Private Sub SpinButton1_SpinUp()
       Call MainProcedure
    End Sub
  3. Makro ausführen: Du kannst jetzt das Makro aufrufen, um die Funktionalität beizubehalten.


Häufige Fehler und Lösungen

  • Fehler: LinkedCell wird nicht aktualisiert

    • Lösung: Stelle sicher, dass die LinkedCell korrekt gesetzt ist, bevor du das neue Sub aufrufst. Überprüfe, ob die Zellenverknüpfung im neuen Sub berücksichtigt wird.
  • Fehler: Aufruf funktioniert nicht

    • Lösung: Verifiziere, dass du das Sub korrekt aufrufst. Verwende Call oder rufe das Sub direkt auf, ohne das Call-Schlüsselwort.

Alternative Methoden

Falls du nicht den Code in ein allgemeines Modul verschieben möchtest, kannst du auch den folgenden Ansatz verwenden:

  • Zugriff auf den Private Sub: Verwende eine öffentliche Sub, die den Private Sub durch den Einsatz von Application.Run aufruft.

    Beispiel:

    Public Sub RunPrivateSub()
       Application.Run "MeinWorkbook!SpinButton1_SpinUp"
    End Sub

Dies ermöglicht es dir, den Private Sub aus einer anderen Prozedur heraus aufzurufen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du einen Private Sub über ein Makro aufrufen kannst:

  1. Erstelle ein allgemeines Modul und füge folgenden Code hinzu:

    Sub MainProcedure()
       MsgBox "Der Spin-Button wurde betätigt!"
    End Sub
  2. Ändere die SpinButton1_SpinUp()-Ereignisprozedur:

    Private Sub SpinButton1_SpinUp()
       Call MainProcedure
    End Sub
  3. Wenn du nun den Spin-Button betätigst, wird die Nachricht angezeigt.


Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang deines Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme beim Aufruf von Private Subs zu handhaben.

  • Dokumentation: Kommentiere deinen Code, insbesondere wenn du mehrere Private Sub und öffentliche Sub-Prozeduren hast. Dies erleichtert die Wartung und das Verständnis des Codes.


FAQ: Häufige Fragen

1. Frage
Kann ich einen Private Sub direkt ohne Änderungen aufrufen?
Antwort: Nein, Private Subs sind nur innerhalb des Moduls zugänglich, in dem sie definiert sind. Du musst den Code in eine öffentliche Sub-Prozedur verschieben oder eine öffentliche Sub verwenden, um sie aufzurufen.

2. Frage
Was passiert mit der LinkedCell, wenn ich den Code verschiebe?
Antwort: Die LinkedCell bleibt aktiv, solange du sicherstellst, dass der Code, der sie aktualisiert, weiter korrekt implementiert ist. Prüfe den Code nach dem Verschieben, um sicherzustellen, dass er die LinkedCell wie gewünscht bearbeitet.

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