Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variablenübergabe an nächstes Macro

Variablenübergabe an nächstes Macro
31.08.2017 17:25:41
Knauer
Mein Versuch, jeden Schleifenwert an ein weiteres Macro zu übergeben, funktionieren leider nicht. Wer kann mir hier auf die Sprünge helfen? Folgende 2 Macros funktionieren nur einzeln.
Es hapert an der Variablenübergabe an den 3 Codestellen im Macro "Tabelle"...
Public Sub RaumArray()
Dim Raum
Dim r As Variant
Raum = Array(101, 102, 103, 304, 501)
For Each r In Raum
Call Tabelle
Next r
End Sub
Public Sub Tabelle()
' Tabelle
' Tastenkombination: Strg + r
'neue Tabelle aus Tab 300 erzeugen und ans Ende stellen
Sheets("300").Select
Sheets("300").Copy After:=Sheets(Sheets.Count)
'Tabelle umbenennen
Sheets("300 (2)").Select
Sheets("300 (2)").Name = "r"
'Tabelleninhalt löschen
Range("A2:T55").Select
Selection.ClearContents
'zur Haupttabelle 3.OG springen und Raumspalte filtern
Sheets("3.OG").Select
ActiveSheet.Range("$A$1:$T$346").AutoFilter Field:=1, Criteria1:="r"
'Ergebnis selektieren und kopieren zur neu erzeugten Tab 301
ActiveSheet.UsedRange.Copy Sheets("r").Range("A1")
'zurück zur Haupttabelle und Filter deaktivieren
Sheets("3.OG").Select
ActiveSheet.Range("$A$1:$T$346").AutoFilter Field:=1
End Sub


		

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablenübergabe an nächstes Macro
31.08.2017 17:36:10
Peter
Hallo Knauer,
du musst deine Variable nicht innerhalb des Makros, sondern außerhalb als Public definieren.
Gruß Peter
AW: Variablenübergabe an nächstes Macro
31.08.2017 19:43:26
Knauer
Hallo Peter,
das hatte ich schon versucht. Momentan ist die Variable mit "Dim r As Variant" definiert.
Wie sollte sie richtig definiert werden? Vielleicht Beispiel?
AW: Variablenübergabe an nächstes Macro
31.08.2017 18:07:01
Nepumuk
Hallo Knauer,
welche Variable soll Übergeben werden? Ich sehe im Makro Tabelle keine Verwendung einer Variablen.
Gruß
Nepumuk
AW: Variablenübergabe an nächstes Macro
31.08.2017 19:51:22
Knauer
Hallo Nepomuk,
der Schleifenwert ist r und er nimmt nacheinander den Wert 101,102, usw. an. Dieser Wert soll jeweils im zweiten Macro den Wert "r" ersetzen und damit die Filter- und Kopieraktion durchlaufen. Wenn ich weis wie der jeweilige Wert zur Laufzeit im Macro Tabelle weiterverwendet werden kann, wäre es gelöst.
Anzeige
AW: Variablenübergabe an nächstes Macro
31.08.2017 20:42:09
Nepumuk
Hallo Knauer,
und was soll passieren wenn du das Makro manuell aufrufst?
Gruß
Nepumuk
AW: Variablenübergabe an nächstes Macro
31.08.2017 21:03:05
Knauer
Hallo Nepumuk,
ich hatte das eigentlich schon beschrieben. Beim ersten Macro durchläuft r die Raumnummern - dazu muss natürlich die Call-Schleife durch Debug.Print r ersetzt werden. Dann wird das im Direkt Fenster angezeigt. Und das zweiten Makro wird entsprechend den beigefügten Kommentaren abgearbeitet; d.h. es wird eine neue Tabelle erzeugt, umbenannt, die Haupttabelle gefiltert, der ausgewählte Bereich kopiert und dann wieder der Filter zurückgesetzt. Dann natürlich für den nächsten Raum usw. Um das separat auszuprobieren muss natürlich das "r" durch eine Raumnr. (101) ersetzt werden. Das fuktioniert auch.
Nur die automatische Ersetzung der r-Variable fehlt mir noch. Irgendeine Idee?
Viele Grüße
Dieter
Anzeige
AW: Variablenübergabe an nächstes Macro
31.08.2017 21:25:41
Nepumuk
Hallo Knauer,
und ich dachte du willst das Makro "Tabelle" auch manuell aufrufen.
Wenn nicht, dann so:
Option Explicit

Public Sub RaumArray()
    Dim r As Variant
    For Each r In Array(101, 102, 103, 304, 501)
        Call Tabelle(r)
    Next
End Sub

Private Sub Tabelle(ByVal r As Variant)
    'neue Tabelle aus Tab 300 erzeugen und ans Ende stellen
    Worksheets("300").Copy After:=Sheets(Sheets.Count)
    'Tabelle umbenennen
    ActiveSheet.Name = r
    'Tabelleninhalt löschen
    Range("A2:T55").ClearContents
    With Worksheets("3.OG")
        'Haupttabelle 3.OG Raumspalte filtern
        .Range("$A$1:$T$346").AutoFilter Field:=1, Criteria1:="=" & r
        'Ergebnis kopieren zur neu erzeugten Tab 301
        .UsedRange.Copy Range("A1")
        'Filter deaktivieren
        Call .ShowAllData
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Variablenübergabe an nächstes Macro
31.08.2017 21:48:55
Knauer
Es war doch garnicht so schwer - es funktioniert. Ich bin begeistert.
Meinen herzlichen Dank
Dieter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige