Wie übergibt man zwei Variablen von einem Excel-Makro an ein anderes?

Antwort vom

Um zwei Variablen von einem Excel-Makro an ein anderes zu übergeben, gibt es mehrere Möglichkeiten. Die gängigste und sauberste Methode ist, das zweite Makro als **Sub** oder **Function** mit Parametern zu definieren und die Variablen beim Aufruf zu übergeben. **Beispiel:** ```vba Sub Makro1() Dim var1 As String Dim var2 As Integer var1 = "Hallo" var2 = 42 Call Makro2(var1, var2) End Sub Sub Makro2(ByVal text As String, ByVal zahl As Integer) MsgBox "Text: " & text & vbCrLf & "Zahl: " & zahl End Sub ``` **Erklärung:** - `Makro1` definiert zwei Variablen und ruft `Makro2` auf, wobei die Variablen als Argumente übergeben werden. - `Makro2` nimmt die Werte als Parameter entgegen und kann sie weiterverarbeiten. **Alternativen:** - Du kannst auch **globale Variablen** (mit `Public` im Modulkopf) verwenden, aber das ist weniger empfehlenswert, da es zu unerwarteten Nebeneffekten führen kann. **Weitere Infos:** - [Microsoft: Sub procedures (VBA)](https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/sub-statement) - [Microsoft: Passing Arguments to Procedures (VBA)](https://learn.microsoft.com/de-de/office/vba/language/concepts/getting-started/passing-arguments-to-procedures) Diese Methode ist übersichtlich und entspricht den Best Practices in VBA.

Kategorie: Technologie Tags: Excel Makro Variablen

Verwandte Fragen

Excel-Makro: Spalten E:G per Button ein- und ausblenden?

Ja. Verwende dieses Makro und weise es dem Button zu: vba Sub SpaltenEGUmschalten() Columns("E:G").EntireColumn.Hidden = Not Columns("E").EntireColumn.Hidden End Sub So funktio...

Excel-Makro: Im Bereich B10:B20, wenn der IndentLevel in Spalte B = 1 ist, dann in dieser Zeile in B:O oben eine dünne Rahmenlinie setzen?

vba Sub RahmenObenBeiIndent1() Dim ws As Worksheet Dim c As Range Set ws = ActiveSheet For Each c In ws.Range("B10:B20") If c.IndentLevel = 1 Then With ws.Range(ws.Cells(c.Row, &q...

Kann man mit einem Excel-Makro abfragen, ob und wie stark ein Zellinhalt eingerückt ist?

Ja. In Excel-VBA kannst du die Einrückung einer Zelle über IndentLevel abfragen. Beispiel: vba Sub EinrueckungPruefen() Dim wert As Long wert = Range("A1").IndentLevel MsgB...

Lässt sich die Excel-Warnung „Pivot enthält schon Daten“ per Makro ausschalten?

Ja. Die Meldung lässt sich im Makro meist mit deaktivierten Excel-Warnungen unterdrücken: vba Application.DisplayAlerts = False ' Pivot-Aktion hier, z. B. Aktualisieren / Ersetzen / L...

Kann man mit einem Excel-Makro den Filter einer Pivot-Tabelle ändern?

Ja. Mit einem Excel-Makro (VBA) kannst du den Filter einer Pivot-Tabelle ändern, zum Beispiel: Berichtsfilter setzen einzelne Pivot-Felder filtern bestimmte Elemente ein-/ausblenden Datums- oder...

Excel-Makro: Einfärbung der Zellen B10:D15 aufheben?

Ja. In VBA z. B. so: vba Range("B10:D15").Interior.Pattern = xlNone Alternativ: vba Range("B10:D15").Interior.ColorIndex = xlColorIndexNone Falls auch andere Formatierungen e...

Excel-Makro: Kann bei einer If-Schleife mit nur einer Anweisung nach Then und Else alles in derselben Zeile stehen?

Ja. In VBA/Excel-Makros darf eine einzeilige If-Anweisung so geschrieben werden: vba If Bedingung Then AnweisungElse Mit Else in derselben Zeile: vba If x > 0 Then y = 1 Else y = 2 Sobald na...

Wie löscht man mit einem Excel-Makro im Bereich B10:H100 alle Zellrahmen?

vba Range("B10:H100").Borders.LineStyle = xlNone

Excel-Makro: Alle Spalten in Tab1!Alle ausblenden, wobei „Alle“ als =INDIREKT(Tab2!B5):INDIREKT(Tab2!B6) definiert ist?

Ja. Das geht per VBA, indem der definierte Name Alle ausgewertet und die darin enthaltenen Spalten ausgeblendet werden. vba Sub SpaltenAusblendenAlle() Dim rng As Range On Error GoTo Fehler Set...

Excel: Wie ruft man mit einem Makro ein anderes Makro auf und übergibt dabei die Zahl 1 oder 2 sowie die Zelladresse A4?

Ja. In VBA übergibst du Werte als Parameter. vb Sub Starter() Call ZielMakro(1, Range("A4").Address) Call ZielMakro(2, Range("A4").Address) End Sub Sub ZielMakro(ByVal num...