Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBa- Zellinhalt kopieren, Einfügen in var. Bereich

VBa- Zellinhalt kopieren, Einfügen in var. Bereich
20.05.2019 08:39:33
Tilman
Hi,
diese Frage, ist eine Folge von diesem Thema:
https://www.herber.de/cgi-bin/callthread.pl?index=1692984#1692984
in dieser Datei findet Ihr das Projekt (stark gekürzt):
https://www.herber.de/bbs/user/129888.xlsm
ich leere mit dem button "Kalender löschen" einen großen Bereich (der fordere Bereich A1 bis E200 darf nicht gelöscht werden)
mit dem Button "Kalender erstellen" erzeuge ich einen Kalender (danke für den Code MM)
mit dem dritten Button "Kalender füllen" möchte ich den Zellinhalt aus E6 bis E200 kopieren und in die erzeugten Kalenderzellen einfügen.
meine erste Idee war es, die zuvor verwendete targetfunktion als Zielzellen zu verwenden. das hat aber nicht funktioniert.
Aktuell versuche ich mit einer If Schleife die zellen zu kopieren:

Sub fill_calender()
Dim ws As Worksheet
Dim fromDate As Long, toDate As Long, cntDays As Long
Dim target As Range
Dim C_TargetRow As Long
Dim n As Long
Dim d As Long, m As Long, y As Long, col As Long, newd As Long
Set ws = ActiveSheet
ws.Select
C_TargetRow = 6
n = 6
fromDate = ws.Range(C_From_Date).Value
toDate = ws.Range(C_To_Date).Value
cntDays = toDate - fromDate + 1
ws.Cells(C_TargetRow, 6).Value = fromDate
If Cells(C_TargetRow, n).Value  "" Then
Range("E6").Copy _
Destination:=Cells(C_TargetRow, n)
n = n + 1
End If
End Sub
Das funktioniert aber auch nicht recht.
kann mir wer helfen?
Hinweis: ich kopier erst mal nur eine zelle, versuche im nächsten schritt dann die anderen Zellen zu integrieren in den code.
Danke
Tilman

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBa- Zellinhalt kopieren, Einfügen in var. Bereich
20.05.2019 11:44:11
Tilman
nach langem Rumprobieren, und Auffrischen meiner VBA Kenntnisse bin ich schon mal n Schritt weiter:

Sub fill_calender()
Dim ws As Worksheet
Dim fromDate As Long, toDate As Long, cntDays As Long
Dim target As Range
Dim C_TargetRow As Long
Dim n As Long
Dim d As Long, m As Long, y As Long, col As Long, newd As Long
Dim i As Long
Set ws = ActiveSheet
ws.Select
C_TargetRow = 6
n = 6
fromDate = ws.Range(C_From_Date).Value
toDate = ws.Range(C_To_Date).Value
cntDays = toDate - fromDate + 1
For i = 0 To cntDays + 1
Range("E6").Copy _
Destination:=Cells(6, n)
n = n + 1
i = i + 1
Next
End Sub
Problem nur: das einfügen geht nicht bis zum Ende des Kalenders sondern stoppt irgendwann
Anzeige
AW: VBa- Zellinhalt kopieren, Einfügen in var. Bereich
20.05.2019 12:20:58
Torsten
Hallo Tilman,
also wenn ich dich richtig verstehe, willst du die Zellen E6 bis E200 alle in die Zeile 6 ab Spalte F einfuegen?
Ich versteh nicht ganz, warum ab E6. Fuer mich wurde es ab E12 losgehen, da ja in E6 bis E11 Formeln drin stehen.
Dann versteh ich auch nicht ganz, warum bis E200? Der erzeugte Kalender beinhaltet 154 Zellen.
An deiner Stelle wuerde ich nochmal eine Beispieldatei hochladen mit Fakedaten und wie das Endergebnis aussehen soll.
Das waere einfacher nachzuvollziehen.
Gruss Torsten
AW: VBa- Zellinhalt kopieren, Einfügen in var. Bereich
20.05.2019 13:19:32
Tilman
Hallo Torsten,
hier die aktualisierte Datei:
https://www.herber.de/bbs/user/129897.xlsm
(um die dateigröße zu minimieren, hab ich die meisten Formeln aus Spalte E gelöscht)
anscheinend hab ich es schlecht beschrieben
Die Spalte E6:E190 ist in der Orginaldatei voller Formeln (Beispiel der formeln sind in E9:E11)
Diese Spalte soll übertragen werden auf den Kalender bereich (F9:x200 x- ist hierbei Variabel durch das Enddatum des Kalenders)
das endergebnis kann ich nicht hochladen, da es durch die vielen Formeln größer als 300kb ist.
ich hab aber mal eine Beispieldatei erzeugt und ohne VBA den Kalender gefüllt. Das gibt n Eindruck vom Ergebnis: https://www.herber.de/bbs/user/129841.xlsm
Anzeige
AW: mögliche Lösung
20.05.2019 14:00:30
Tilman
nahc langem Basteln, hab ich jetzt endlich ne Funktion gefunden die Funktioniert. Ist nicht besonders schön, aber funktional:

Sub fill_calender()
Dim ws As Worksheet
Dim fromDate As Long, toDate As Long, cntDays As Long
Dim target As Range
Dim C_TargetRow As Long
Dim cntRows As Long
Dim n As Long
Dim d As Long, m As Long, y As Long, col As Long, newd As Long
Dim i As Long
Set ws = ActiveSheet
ws.Select
fromDate = ws.Range(C_From_Date).Value
toDate = ws.Range(C_To_Date).Value
cntDays = toDate - fromDate + 1
cntRows = Application.WorksheetFunction.CountA(Range("A:A")) - 3
C_TargetRow = 6
n = 6
For i = 0 To cntDays - 1
Range("E6").Copy _
Destination:=Cells(C_TargetRow, n)
Range("E7").Copy _
Destination:=Cells(C_TargetRow + 1, n)
n = n + 1
Next i
C_TargetRow = 9
m = 6
For i = 9 To cntRows + 1
Range("E9:E200").Copy _
Destination:=Cells(C_TargetRow, m)
m = m + 1
Next i
End Sub
Falls jemanden ne bessere Lösung einfältt, würd ich mich freuen
Anzeige
AW: mögliche Lösung
20.05.2019 14:26:47
Torsten
Hallo nochmal Tilman,
versuch mal das hier:
Sub fill_calender()
Dim lngLetzteSp As Long, lngLetzteZei, a As Long
With ActiveSheet
lngLetzteSp = .Cells(5, Columns.Count).End(xlToLeft).Column
lngLetzteZei = .Cells(Rows.Count, 5).End(xlUp).Row
For a = 6 To lngLetzteZei
.Range(.Cells(a, 6), .Cells(a, lngLetzteSp)).Formula = .Cells(a, 5).Formula
Next a
End With
End Sub
Gruss Torsten
AW: mögliche Lösung
20.05.2019 14:27:37
Torsten
Hi Tilman,
versuch mal:
Sub fill_calender()
Dim lngLetzteSp As Long, lngLetzteZei, a As Long
With ActiveSheet
lngLetzteSp = .Cells(5, Columns.Count).End(xlToLeft).Column
lngLetzteZei = .Cells(Rows.Count, 5).End(xlUp).Row
For a = 6 To lngLetzteZei
.Range(.Cells(a, 6), .Cells(a, lngLetzteSp)).Formula = .Cells(a, 5).Formula
Next a
End With
End Sub
Gruss Torsten
Anzeige
AW: mögliche Lösung
20.05.2019 14:57:06
Tilman
welche deiner Antworten soll ich jetzt nehmen? ist dir da n fehler unterlaufen oder sind beide Antworten die selben?
Danke auf jeden fall.
ich probiers mal
AW: mögliche Lösung
20.05.2019 15:11:48
Torsten
Hi sind beide die selben codes. dachte nur beim ersten mal ich haette falsch geklickt
AW: mögliche Lösung
20.05.2019 15:39:14
Tilman
habs probiert... funktioniert super... vielen dank
war aller dings auch sehr glücklich darüber, dass ich auch selber ne Lösung erstellt habe.
Aber du hast den Code ja sehr vereinfacht... dankeschön
AW: mögliche Lösung
20.05.2019 15:44:36
Torsten
Hallo Tilman,
hatte mir deine Loesung noch nicht angeschaut.
Nur kurz zur Erklaerung meines Codes. Das einfache hierbei ist, dass ich eigentlich nur die Formeln nach rechts ziehe bis zur letzten benutzten Spalte (wird in der Zeile mit dem Datum ueberprueft), wie ich es mit der Maus auch machen wuerde. Und das solange, Zeile fuer Zeile, bis die letzte benutzte Zeile in Spalte E (wo die Ausgangsformeln stehen) erreicht ist.
Viel Spass und danke fuer die Rueckmeldung.
Kann ich mir denken, dass du gluecklich warst, ne Loesung zu finden.
Anzeige

339 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige