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

Forumthread: VBA: Variable ins Folgemakro übergeben?

VBA: Variable ins Folgemakro übergeben?
04.07.2006 13:56:19
Manfred
Hallo,
wie kann ich eine Variable (AbfrageMakro="ja"), aus dem Startmakro in ein daraus zu startendes anderes Makro übergeben, wo ich dann eine IF Abfrage auf die Variable machen möchte?
Ich möchte nämlich eine Zeile in dem VBA des Folgemakros überspringen, wenn ich es automatisch aus dem Startmakro heraus starte. Starte ich das Folgemakro alleine für sich, soll diese Zeile nicht übersprungen, sondern ausgeführt werden. Wie mache ich das?
Gruß Manfred
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 14:01:24
u_
Hallo,
das einfachste: Deklariere die Var im Kopf eines Standard-Moduls als Public.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 14:22:40
Manfred
Hallo,
wie geht das? Habe bisher nur per Recorder aufgezeichnet und verändert.
etwa so?
public = AbfrageMakro="ja"
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 14:36:50
u_
Hallo,
in ein Modul:
Public blnMakroStart As Boolean

Sub StartMakro()
blnMakroStart = True
Call Folgemakro
End Sub


Sub Folgemakro()
If blnMakroStart = True Then
MsgBox "Ich wurde vom Makro gestartet"
blnMakroStart = False
Else
MsgBox "Ich wurde direkt gestartet"
End If
End Sub

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 14:56:06
Martin
Hallo,
warum dieser Umweg, es geht doch auch direkt (siehe mein früheres Posting)? Oder spricht etwas gegen die von mir vorgeschlagene Lösung (möchte im Zweifel etwas dazulernen)?
Gruß
Martin Beck
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 15:11:09
u_
Hallo,
prinzipiell ist dein Weg der elegantere.
Er will aber das 2. Makro auch separat starten.
Per Schaltfläche geht das, wenn du den Parameter optional machst, nicht aber per Makro-ausführen. Das erscheint nicht in der Liste.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 15:12:25
Manfred
Hallo,
habe es probiert, aber die Variable wird nicht übergeben. :-(
Um es nochmals zu erläutern, das Folgemakro ist in einer anderen Datei und wird mit application.run aufgerufen.
Gruß Manfred
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 15:47:27
u_
Hallo,
Um es nochmals zu erläutern, das Folgemakro ist in einer anderen Datei und wird mit application.run aufgerufen.
Warum 'nochmals'? Das hast du noch nie geschrieben!
dann geht es nur mit Parameterübergabe, nicht mit einer Public-Variablen.

Sub Startmakro()
Application.Run "mappe10!test", True
End Sub


Sub FolgeMakro(Optional x As Boolean)
If x = True Then
MsgBox "start aus mappe9"
Else
MsgBox "start so"
End If
End Sub

FolgeMakro kannst du aber nur per Button oder aus einer anderen Prozedur starten.

Sub Startmakro2()
FolgeMakro
End Sub

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 15:59:51
Manfred
Sorry wenn das nicht so rüber gekommen ist, das die beiden Makros in verschiedenen Dateien liegen.
Das klingt nun alles sehr verwirrend für mich. Vielleicht war es zu viel auf einmal und werde mal eine Nacht darüber schlafen. Gibt es sonst eine Möglich festzustellen, ob ein Makro per Makro gestartet wurde oder direkt aufgerufen wurde?
Gruß Manfred
PS: Ich probiere damit morgen weiter.
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
05.07.2006 10:50:11
Manfred
Hallo,
ich habe es folgendermaßen probiert, aber es funktioniert alles nicht.
StartDatei mit dem StartMakro:

Sub StartMakro()
Workbooks.Open ("D:\Manfred\FolgeDatei.xls")
Application.Run "FolgeDatei.xls!Folgemakro" 'mit dem ,true dahinter startet es nicht einmal
End Sub

FolgeDatei mit dem FolgeMakro:

Sub Folgemakro()
If x = True Then
MsgBox ("aus StartMakro gestartet!")
Else
MsgBox ("Makro direkt gestartet!")
End If
End Sub

Was mache ich noch falsch, damit es funktioniert?
!!! Möchte aber keine weiteren Buttons anklicken müssen, sondern es soll alles alleine ablaufen!!!
Gruß Manfred
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
05.07.2006 14:38:16
u_
Hallo,
du hast
(Optional x As Boolean)
vergessen.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Super, Klasse, Danke, das wars
06.07.2006 10:22:17
Manfred
Hallo u_,
jetzt konnte ich auch das:
, True
dahinter eingeben und es funktioniert.
Vielen Dank
Anzeige
AW: VBA: Variable ins Folgemakro übergeben?
04.07.2006 14:10:24
Martin
Hallo Manfred,
im Prinzip so:

Sub Uebergabe()
x = 5
Call Test(x)
End Sub


Sub Test(Wert)
MsgBox Wert
End Sub

Gruß
Martin Beck
vielleicht geht es auch anders? mein Gedanke...
05.07.2006 11:06:04
Manfred
Vielleicht geht es ja auch anders mein Problem zu lösen?
Kann ich erkennen lassen, ob eine Sub von einer anderen automatisch gestartet wurde? Möchte doch nichts weiter, als das eine Zeile in der Sub ausgelassen wird, wenn es automatisch gestartet wurde.
Gruß Manfred
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Variablen zwischen Makros übergeben


Schritt-für-Schritt-Anleitung

Um eine VBA-Variable von einem Makro zu einem anderen zu übergeben, kannst du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel. Dies kannst du tun, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").

  3. Deklariere die Variable als Public, um sie für andere Sub-Prozeduren zugänglich zu machen. Füge diesen Code in das Modul ein:

    Public blnMakroStart As Boolean
  4. Schreibe das Startmakro, das die Variable setzt und das Folgemakro aufruft:

    Sub StartMakro()
       blnMakroStart = True
       Call Folgemakro
    End Sub
  5. Implementiere das Folgemakro, das die übergebene Variable verwendet:

    Sub Folgemakro()
       If blnMakroStart = True Then
           MsgBox "Ich wurde vom Startmakro gestartet."
           blnMakroStart = False
       Else
           MsgBox "Ich wurde direkt gestartet."
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Die Variable wird nicht übergeben.

    • Lösung: Stelle sicher, dass die Variable als Public deklariert ist und dass du das Folgemakro korrekt aufrufst.
  • Fehler: Folgemakro gibt immer die gleiche Nachricht aus.

    • Lösung: Überprüfe, ob du die Variable blnMakroStart nach der ersten Verwendung zurücksetzt.

Alternative Methoden

Eine alternative Methode, um VBA-Parameter zu übergeben, ist die Verwendung von Parametern in der Sub-Prozedur:

Sub StartMakro()
    Application.Run "FolgeDatei.xls!Folgemakro", True
End Sub

Sub Folgemakro(Optional x As Boolean)
    If x = True Then
        MsgBox "Start aus Startmakro!"
    Else
        MsgBox "Makro direkt gestartet!"
    End If
End Sub

In diesem Beispiel wird die Variable als Parameter übergeben. Dies ist besonders nützlich, wenn du Makros in verschiedenen Arbeitsmappen aufrufen möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine Variable in einem anderen Arbeitsblatt übergeben kannst:

  1. Startmakro in der Datei "StartDatei.xls":

    Sub StartMakro()
       Workbooks.Open ("D:\Manfred\FolgeDatei.xls")
       Application.Run "FolgeDatei.xls!Folgemakro", True
    End Sub
  2. Folgemakro in der Datei "FolgeDatei.xls":

    Sub Folgemakro(Optional x As Boolean)
       If x = True Then
           MsgBox "Aus Startmakro gestartet!"
       Else
           MsgBox "Makro direkt gestartet!"
       End If
    End Sub

In diesem Beispiel wird das Folgemakro mit einem Parameter aufgerufen, was die Übertragung von Variablen in VBA erleichtert.


Tipps für Profis

  • Nutze Optional Parameter, um die Flexibilität bei der Übergabe von Variablen zu erhöhen.
  • Achte darauf, dass alle Variablen richtig deklariert sind, um Laufzeitfehler zu vermeiden.
  • Kommentiere deinen Code, um die Verständlichkeit zu erhöhen und die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie übergebe ich mehrere Parameter an ein VBA-Makro?
Du kannst mehrere Parameter in der Sub-Prozedur definieren, indem du sie durch Kommas trennst, z.B.:

Sub Folgemakro(Optional x As Boolean, Optional y As String)
    ' Deine Logik hier
End Sub

2. Was ist der Unterschied zwischen Public und Private Variablen?
Public Variablen sind in allen Modulen und Prozeduren verfügbar, während Private Variablen nur innerhalb des Moduls sichtbar sind, in dem sie deklariert wurden.

3. Kann ich eine Variable in einem anderen Modul übergeben?
Ja, du kannst eine Public Variable in einem Modul deklarieren und sie dann in einem anderen Modul verwenden, solange du den richtigen Modulnamen angibst.

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