Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereich Zellenweise übertragen (Schleife)

Bereich Zellenweise übertragen (Schleife)
10.05.2008 14:39:55
Ralf
Hallo alle zusammen,
Ich hab mich wieder einmal festgebissen mit VBA. Vieleicht seh ich den Wald auch vor lauter Bäumen nicht.
Ich möchte Teile von mehrern Zeilen aus einer bereis geöffneten Mappe (Mappe1) in eine andere Mappe (Mappe2) übernehmen.
Bsp für eine Zeile:

Sub Daten_holen ()
Dim x As Integer, y As Integer
For x = 10 to 100
y = x - 5
Workbooks("Mappe2.xls").Sheets("Tabelle1").Cells(20,y) = Worksbooks("Mappe1.xls"). _
Sheets("Tabelle1").Cells(25,x)
Next
End Sub


Der feste Bereich Cells(25,10) bis Cells(25,100) wird dann bei mir ab Cells(20,5) eingetragen
Jetzt möchte ich das auf 30 Zeilen ausdehnen, da kann ich doch nicht 30 Mal die Spalte ansprechen,
wobei noch dazu kommt, dass in "Mappe1" nur jede 2.Zeile(row) geholt werden, abber in "Mappe2"
fortlaufend eingefügt werden soll.
Es würde nicht funtionieren, die leeren Zeilen mit zu holen, und anschließend zu löschen, da unterhalb der geholten Zeilen Daten sind, die dann ihren Bezug verlieren.
So jetzt kennt ihr mein Problem und "seht hoffentlich die Bäume" ;-)
Ich wäre für jeden Tipp, dankbar
Ralf

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich Zellenweise übertragen (Schleife)
10.05.2008 14:55:00
Daniel
Hallo
wenn ich es richtig verstanden habe, so vielleicht

Sub Daten_holen ()
dim ZielZeile as long
dim QuelleZeile as long
zielZeile = 20
for QuelleZeile = 25 to (25 + 60) Step 2
Workbooks("Mappe2.xls").Sheets("Tabelle1").Cells(ZielZeile,5).resize(1,91) = Worksbooks(" _
Mappe1.xls").sheets("Tabelle1").Cells(QuelleZeile,10).resize(1,91)
ZielZeile = Zielzeile + 1
next
End Sub


Gruß, Daniel
PS: nicht getestet und auf rechtschreibfehler geprüft
der Wert in der Schleifendefinition hängt jetzt davon ab ob 15 oder 30 Zeilen tatsächlich übertragen werden sollen (also ohne die Leerzeilen)

Anzeige
AW: Bereich Zellenweise übertragen (Schleife)
10.05.2008 15:04:53
Ralf
Danke für die Antwort, für was steht .resize(1, 91) ?
Bleibt die Zielzeile nich bei Zeile 5 ?
Und eine hab ich noch:
Wieso As long und nicht Integer?
Soviele Fragen, aber Danke trotzdem
Ralf

AW: Bereich Zellenweise übertragen (Schleife)
10.05.2008 15:18:19
Reinhard
Hi Ralf,
schau mal in die Hilfe zu resize und/oder spiel mit rum:

Sub tt()
MsgBox Range("A2").Resize(1, 100).Address
End Sub


Und zu Long, Integer geht nur bis 32.xxx, schlecht bei 65536 Zeilen, noch dazu kommt dieses:
https://www.herber.de/forum/archiv/952to956/t954760.htm
Gruß
Reinhard

Anzeige
AW: Bereich Zellenweise übertragen (Schleife)
10.05.2008 15:18:47
Daniel
Hi
wenn ich es richtig verstanden habe, dann willst du 30 Zeilen übertragen
und da wäre es doch blösinn, die Zielzeile bei 5 zu belassen und 30x zu überschreiben.
daher wird der Wert der Zielzeile bei jedem Schleifendurchlauf um 1 erhöht
.Reszie ist eine Möglichkeit einen alternative Möglichkeit einen Zellbereich anzugeben. Wenn ich beispielsweise den Zellbereich von A1:C10 angeben will, dann geht das per Makro so:

RANGE(Cells(1,1), Cells(10,3))
oder eben auch so:
Cells(1,1).resize(10,3)


wenn man mit Zeilen- oder Spalten-Nummern arbeitet, sollte man immer Long verwenden, da Integer nur bis c.a. 37000 definiert ist, aber wesentlich mehr Zeilnummern möglich sind, in einem solchen Fall müsste man LONG nehmen.
Außderdem ist es halt so, daß Excel intern bei Zeilen- und Spalten-Nummern immer LONG verwendet.
wird jetzt eine INTEGER-Variable als Zeilen-Nr verwendet, muss diese erst in LONG umgewandelt werden, dh. das verwenden von INTEGER für Varialblen, die als Zeilen- und Spalten-Nr verwendet werden ist nachteilig.
Gruß, daniel

Anzeige
AW: Bereich Zellenweise übertragen (Schleife)
10.05.2008 15:21:38
Ralf
Vielen Dank, das ist ja Klasse. Wieder was gelernt!
Das Forum ist cool.
Schönes Wochenende noch.
:-)
Ralf

OT Sehr schön :-)
10.05.2008 15:23:26
Reinhard
Hallo Daniel,
ich bin unzufrieden mit mir weil ich mir die xxx bei 32.xxx von Integer nie merken kann.
Deine 37.000 machen mich wieder glücklich mit mir *kicher grien*
Lieben Gruß
Reinhard

AW: OT Sehr schön :-)
10.05.2008 15:28:00
Daniel
Hi
wozu ne Zahl merken, die man eh nicht braucht?
seit ich ROWS.COUNT verwende, vergesse ich auch solangsam die 635536
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige