Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
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

VBA gleicher Corde,mehrere Arbeitsmappen

VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 14:47:49
Martin
Hallo liebes Forum =)
ich möchte nicht mit Kanonen auf Spatzen schießen und deswegen nun meine Frage.
Ich habe einen Code der die Anzahl der Spalten herausfindet, dann Werte ergänzt und in eine andere Datei schreibt.
1:1 das gleiche soll die VBA Datei nun aber mit mehreren Tabellenblättern/Arbeitsmappen machen.
Habt ihr einen Vorschlag, wie ich das möglichst elegant lösen kann?
Kann ich die Arbeitsmappe als Variable im Code schreiben?
Also statt Worksheets("Mappe1").Cells(Datenbankposition, 165 + m).Value sowas wie Worksheets(ArbeitsmappeVar).Cells(Datenbankposition, 165 + m).Value?
Sehr sehr ungern würde ich mit: Arbeitsmappe xy aktivieren und Cells(Datenbankposition, 165 + m).Value arbeiten.... habe da Angst dass es nicht sauber funktioniert.
Dankeschön für Rat.
Euch allen eine schöne Weihnachtszeit!
Grüße Martin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 14:53:51
ChrisL
Hi Martin
Arbeitsmappen (Dateien) oder Arbeitsblätter (Tabellen)?
Hier mal ein stark vereinfachtes Beispiel, wie man das Thema angehen könnte:

Sub MeinMakro()
Call MachEtwas(Workbooks("Mappe1.xlsm").Worksheets("Tabelle1"))
Call MachEtwas(Workbooks("Mappe2.xlsm").Worksheets("Tabelle2"))
End Sub

Private Sub MachEtwas(ws As Worksheet)
ws.Range("A1") = "x"
End Sub
cu
Chris
AW: VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 14:58:59
Martin
Hi Chris,
Dankeschön!
Demnach dann als als
ws.Cells(Datenbankposition, 165 + m).Value = "Test" ?!
Arbeitsmappen/Tabellen/Arbeitsblätter, in einer Datei.
Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 15:22:56
ChrisL
Hi
Gerne...
Und ja, im Prinzip ja :)
Range, Cells, Columns, Rows etc. jeweils mit "ws" referenzieren, so wie du es gemacht hast. Die Frage ist halt dann, ob die anderen Variablen (Datenbankposition, m) in dieser Konstellation noch passen. Aber hierzu fehlt der Gesamtzusammenhang.
Arbeitsmappen/..., in einer Datei.
Arbeitsmappen sind Dateien. Datei in einer Datei macht wenig Sinn. Darum ein klein wenig Verwirrung ob hier wirklich mehrere Dateien/Mappen im Spiel sind oder ob es nur an der Wortwahl liegt. Schlussendlich aber egal, solange du mit meinem Beispielcode von vorhin weiter kommst.
cu
Chris
Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 22:15:14
Martin
Hi Chris und Ralf,
mist beides bekomme ich nicht zum laufen....
Worksheets(stringspeicher).Cells(Rows.Count, z).End(xlUp).Row
z.B. wobei der Tabname als string gespeichert ist.
Ebenso führt das vorgeschlagene
Call letzteZeile(Worksheets(stringspeicher)) zu einem Fehler, vermutlich nicht richtig verkürzt?!
Hoffe eins von beiden bekomme ich irgendwie zum Laufen, auch trotz meiner Verwirrung dass ich Tabs/Blätter gemeint habe :)
Daaaanke für die Hilfe, bin vollends verwirrt.
AW: VBA gleicher Corde,mehrere Arbeitsmappen
23.12.2021 08:30:29
ChrisL
Hi Martin
Vielleicht solltest du die Aufgabe mal gesamtheitlich beschreiben (losgelöst von deiner Vorarbeit) und mit einer Beispieldatei unterstützen.
Bisher fehlt der Zusammenhang und eine konkrete Hilfe ist nicht möglich.
cu
Chris
Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
23.12.2021 13:58:37
Martin
Hallo Chris,
habe gerade die Beispieldatei programmiert und in vereinfachter Form ging es jetzt.
Soweit ich sagen kann war der Fehler, dass ich ein Array mit den Tabnamen gefüllt habe, aber erst ab Feld(2) und später mit Feld(1) arbeiten wollte.
Möchte dennoch zumindest den Code teilen, falls es mal jemanden wie mir ergeht und er vor dem gleichen Problem steht.
Dim i As Integer
Dim j As Integer
Dim z As Integer
Dim letzteZeileTab As Integer
Dim Tabs(1 To 20) As String

Private Sub CommandButton1_Click()
letzteZeileTab = Worksheets("Hauptpanel").Cells(Rows.Count, 6).End(xlUp).Row
'Einlesen Tabnamen
For i = 2 To letzteZeileTab
Tabs(i - 1) = Worksheets("Hauptpanel").Cells(i, 6).Value
'MsgBox Tabs(i-1)
Next i
For j = 1 To letzteZeileTab - 1
Call Ausfuehren(Worksheets(Tabs(j)))
'Call Ausfuehren(Tabs(1))
Next j
End Sub

Private Sub Ausfuehren(ws As Worksheet)
letzteZeileQ = ws.Cells(Rows.Count, 2).End(xlUp).Row
MsgBox letzteZeileQ
'weitere Operationen
End Sub

Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
23.12.2021 14:01:05
Martin
p.s. vielen Dank nochmal!!!
AW: VBA gleicher Corde,mehrere Arbeitsmappen
23.12.2021 14:35:06
ChrisL
Hi Martin
Danke für die Rückmeldung und fürs Teilen der Lösung.
Finde toll, dass du dich mit Arrays beschäftigst, auch wenn es hierfür nicht unbedingt notwendig ist (siehe Variante 1). Wenn du mit einem Array arbeiten möchtest, dann empfiehlt es sich im vorliegenden Falls den ganzen Bereich auf einmal in das Array einzulesen (siehe Variante 2).

Sub t1()
Dim i As Integer
With Worksheets("Hauptpanel")
For i = 2 To .Cells(Rows.Count, 6).End(xlUp).Row
Call Ausfuehren(Worksheets(.Cells(i, 6).Text))
Next i
End With
End Sub

Sub t2()
Dim ar As Variant
Dim i As Integer
With Worksheets("Hauptpanel")
ar = Application.Transpose(.Range("F2:F" & .Cells(Rows.Count, 6).End(xlUp).Row))
For i = LBound(ar) To UBound(ar)
Call Ausfuehren(Worksheets(ar(i)))
Next i
End With
End Sub

Private Sub Ausfuehren(ws As Worksheet)
Dim letzteZeileQ As Long
letzteZeileQ = ws.Cells(Rows.Count, 2).End(xlUp).Row
MsgBox letzteZeileQ
End Sub
cu
Chris
Anzeige
AW: VBA gleicher Corde,mehrere Arbeitsmappen
22.12.2021 14:56:36
ralf_b
das mir Worksheets(Name) geht nur bei Arbeitsblättern. Workbooks("Mappe1") würde für Dateien funktionieren , wenn diese geöffnet sind.
Somit wird deine Baustelle etwas umfangreicher um die benötigten Dateien zu listen und der Reihe nach zu bearbeiten.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige