Registriert seit: 21.01.2026
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2511 Build 16.0.19426.20218) 64 Bit
Hallo, ich versuche Daten auf einem anderen Tabellenblatt aufzuarbeiten... und finde mal wieder meinen Fehler nicht, vielleicht hat ja jemand einen Tipp für mich.
Sub KopierenDaten() Dim z As Integer, s As Integer, i As Integer Dim T() As Variant
ThisWorkbook.Worksheets("Ursprung").Activate z = 2 i = 3 s = 5 T = Array(Cells(z, 1), Cells(z, 2), Cells(z, 3), Cells(z, 4), _ Cells(z, 5), Cells(z, 6), Cells(z, 7), Cells(z, 8), Cells(z, 9), _ Cells(z, 10), Cells(z, 11), Cells(z, 12), Cells(z, 13), Cells(z, 14), _ Cells(z, 15), Cells(z, 16), Cells(z, 17), Cells(z, 18)) ThisWorkbook.Worksheets("Bearbeitet").Activate MsgBox "Bin ich da?" Cells(i, 1).Value = T(9) Cells(i, 1).Borders.LineStyle = xlContinuous Cells(i, 1).HorizontalAlignment = xlCenter MsgBox "Noch da?" End Sub
Registriert seit: 12.07.2025
Version(en): 2021
08.03.2026, 09:22
(Dieser Beitrag wurde zuletzt bearbeitet: 08.03.2026, 09:22 von Andreas Killer.)
(08.03.2026, 08:25)Micha2005 schrieb: und finde mal wieder meinen Fehler nicht, vielleicht hat ja jemand einen Tipp für mich. Kein Wunder, wer hat Dir denn das so beigebracht? Also, wenn Du ein Blatt mit einem Autofilter filterst und dann nur bestimmte Spalten wählst in ein anderes Blatt kopierst, dann übergeht Excel bei einem simplen Copy&Paste alles was nicht gewählt oder ausgefiltert ist. Wie macht man das mit VBA ohne einen Autofilter? Sagen wir mal wir wollen die Spalten A:B und Spalte D und Spalten G:J alle anderen interessieren uns nicht. Dann wollen wir in diesen Spalten die Zeile 1, Zeilen 3:4 und Zeilen 8:12 alle anderen nicht. Und diese Daten in das andere Blatt ab A7 kopieren. Code: Sub Test() Dim Source As Range, Dest As Range With Worksheets("Ursprung") Set Source = Intersect(.Range("A:B,D:D,G:J"), .Range("1:1,3:4,8:12")) End With Set Dest = Worksheets("Bearbeitet").Range("A7") Source.Copy Dest End Sub
Wie viele Spalten und Zeilen und ob die nun zusammenhängen oder nicht UND sogar ob die sich überschneiden ist wurscht. Alles klar? Andreas.
Registriert seit: 21.01.2026
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2511 Build 16.0.19426.20218) 64 Bit
Hi, erstmal danke...
ich hab die Quelle absichtlich erstmal einzeln gespeichert, will Sie im Ziel neu anordnen und Notfalls Formatieren.
Für mich dient das eher als Übung, ich versuche mir das mit dem VBA selber mit einem Buch beizubringen und war gerade bei Array, davor hab ich jeden Wert einzeln kopiert. hier ein Ausschnitt...
Sub AlterVersuch() Cells(i, 18).Copy _ Destination:=ThisWorkbook.Worksheets("Bearbeitet").Cells(j, 6) Cells(i, 10).Copy _ Destination:=ThisWorkbook.Worksheets("Bearbeitet").Cells(j, 1) Cells(i, 11).Copy _
Das Ziel ist wenn ich es wirklich schaffe Die Datenbank Zeile für Zeile auf einen Wert zu prüfen und eine Auswahl zum Ziel zu bringen.
Aber dazu muss mir das Buch noch vieeeeel beibringen.
Zurück zu meinen Problem, ich dachte wenn ich das Tabellenblatt aktiviere dann kann ich die Daten in T(x) nach belieben einfügen, er schreibt es aber in die Quelle.
Danke schonmal... bin noch am lernen.
Registriert seit: 12.07.2025
Version(en): 2021
08.03.2026, 10:01
(Dieser Beitrag wurde zuletzt bearbeitet: 08.03.2026, 10:01 von Andreas Killer.)
(08.03.2026, 09:43)Micha2005 schrieb: Aber dazu muss mir das Buch noch vieeeeel beibringen. Micha, gibt Dein Buch zum Altpapier, wenn es solche Codebeispiele enthält dann ist nicht das Papier wert auf dem es gedruckt wurde. Wenn Du Daten in/aus einer Datenbank übertragen willst, dann ist es Pflicht nach den Überschriften (Feldnamen) der Datenbank zu gehen! Nimm mal irgendein Beispiel von dem das Buch denkt das es funktioniert und dann vertauscht Du 2 Spalten und lässt den Code nochmal laufen => ich wette da kommt Datenmüll raus! Ein Code der mit einer Datenbank arbeitet MUSS IMMER zu 100% funktionieren, egal wie oder wo die Spalten sind. Andreas.
Registriert seit: 16.08.2020
Version(en): Office 2024
Hallo Micha, es ist erst mal nicht verkehrt, mal sowas mit Arrays zu versuchen um zu Lernen. Ich vermute mal, dass du das Array als Ganzes (in einem Rutsch) zurückschreiben willst. Falls dies dein Ziel ist schau dir .Resize(AnzahlZeilen, Anzahl Spalten) = Array an. Wenn nicht beschreibe dann einfach mal wo die Werte des Arrays hin sollen oder zeige eine entsprechende Beispieldatei. Gruß Uwe
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo Micha, Zitat:Aber dazu muss mir das Buch noch vieeeeel beibringen. kann es sein, dass der Autor des Buches die Initialen B H hat?
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
08.03.2026, 10:31
(Dieser Beitrag wurde zuletzt bearbeitet: 08.03.2026, 10:32 von RPP63.)
Hab ich mir auch gerade gedacht, Klaus-Dieter!  Folgendes Code: Dim T() As Variant
ThisWorkbook.Worksheets("Ursprung").Activate z = 2 T = Array(Cells(z, 1), Cells(z, 2), Cells(z, 3), Cells(z, 4), _ Cells(z, 5), Cells(z, 6), Cells(z, 7), Cells(z, 8), Cells(z, 9), _ Cells(z, 10), Cells(z, 11), Cells(z, 12), Cells(z, 13), Cells(z, 14), _ Cells(z, 15), Cells(z, 16), Cells(z, 17), Cells(z, 18))
würde ich ja so schreiben Code: Dim T As Range Set T = Worksheets("Ursprung").Range("A2:R2")
Und dies Code: i=3 ThisWorkbook.Worksheets("Bearbeitet").Activate MsgBox "Bin ich da?" Cells(i, 1).Value = T(9)
wäre dann Code: Worksheets("Bearbeitet").Cells(3, 1).Value = T.Cells(9)
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo Ralf,
genau so. Dir einen schönen Restsonntag.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 21.01.2026
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2511 Build 16.0.19426.20218) 64 Bit
Danke für die vielen Antworten...
|