ich muss noch mal eine, vermutlich, blöde Frage stellen. Die Antwort könnte gleich zwei meiner Probleme lösen:
Wie in einem anderen Beitrag schon erwähnt, habe ich einen sehr komplexen Export aufzubereiten.
Ich erzeuge verschieden aufgebaute Tabellen und möchte über unterschiedliche Buttons ausgewählte Seiten in eine neue Arbeitsmappe
kopieren.
Mein Code adressiert bisher konkret ein oder mehrere Blätter die kopiert werden sollen. Natürlich könnte ich jetzt einfach für alle Arten Export eine
separate Funktion erzeugen, das würde ich aber gerne vermeiden, in dem ich in der Sub des Buttons beim Aufruf meiner Export-Funktion einfach die
zu exportierenden Seiten mitgebe. Nach meinem Verständnis müsste das mit einem Array gut gehen und tatsächlich klappt es in dem hier gezeigten speziellen
Fall auch.
Aber dieser Weg führt mich wieder an das Problem, dass es konkret ist und ich die Funktion so nicht mit anderen Übergabewerten aufrufen kann.
'Funktion zum Export der bereinigten CSV
Sub Export(ParamArray cpyStr()) 'Hier ist sicherlich etwas zu _
korrigieren?
Worksheets(Array(cpyStr(0), cpyStr(1))).Copy 'und hier erst recht?
Dim Name
Name = Application.GetSaveAsFilename("", fileFilter:="Microsoft Excel-Arbeitsmappe (*.xlsx), _
*.xlsx", Title:="Speicherort und Dateiname wählen...")
If Name False Then
ActiveWorkbook.SaveAs Name, FileFormat:= _
xlWorkbookDefault
End If
End Sub
Der Aufruf sieht für diesen Fall wie folgt aus und Funktioniert sogar:
Private Sub CommandButton3_Click()
Export "Ausgabe", "Quelle"
Das Problem ist jetzt nur, folgender Aufruf bspw. funktioniert (logischerweise) nicht:
Private Sub CommandButton9_Click()
Export "Partner1", "Partner2", "Partner3", "Partner4"
End Sub
Könnt Ihr mir sagen, wie ich dem Problem beikommen kann?Ein ähnliches Problem habe ich mit einer Prozedur, die vorher über jedes Blatt laufen soll. Auch hier würde ich gerne ein mehrfaches Deklarieren der Subs vermeiden und über Arrays im Aufruf die Prozedur mehrfach ablaufen lassen. Erschwerend hin zu kommt, dass für jedes Blatt auf das die Prozedur angewendet wird eine Eingabe (Datum) durch den Nutzer erfolgen muss (allerdings für alle Blätter immer gleich).
Sub GruppierenEinzeln(sheet As String) 'gleiches Problem wie bei der Export Prozedur?
With ActiveWorkbook.Sheets(sheet)
Dim i As Integer
Dim dateVal As Date
Dim LastRow As Long
Dim SumFaellig As Currency
Dim SumGes As Currency
SumFaellig = 0
SumGes = 0
LastRow = ActiveWorkbook.Worksheets(sheet).Cells(Rows.Count, "A").End(xlUp).Row
On Error Resume Next
dateVal = CDate(InputBox("Bitte ein gültiges Datum in der Form TT.MM.JJJJ eingeben:", "Fä _
lligkeitsdatum")) 'der Wert der für jedes Blatt gesetzt werden soll, auf das die Prozedur angewendet wird
On Error GoTo 0
.Cells.ClearOutline
Application.ScreenUpdating = False
For i = 2 To LastRow
If .Cells(i, 6)
Ich hoffe ich konnte halbwegs verständlich vermitteln, wo es bei mir grad hängt!Vorab danke ich euch für Tipps und Verbesserungsanstöße!
Liebe Grüße
Sascha