AW: Dynamisches Kopieren
11.11.2020 19:27:58
Edmund
Hallo Michael
Also:
zS = b am Ende der kleinen Schleife. Da liegt der Hund begraben
Ich habe mit den Variablen a und b sozusagen die Ablage für Zeilen ermittelt, damit das Makro sich nach der kleinen Schleife anschließend daran "erinnert", wo es weitermachen soll.
Jetzt hast Du zwar, damit alte Daten nicht mehr überschrieben werden ganz richtig die Zeile ermittelt, mit der weitergemacht werden soll, die wurde danach aber von meiner Ablage (b) wieder überschrieben.
Heißt, wenn Du am Ende weitermachen willst, muss b das wissen.
Ich hab das mal angepasst.
Weiter, (aber das hat auf die Funktionalität keinen Einfluss) hast Du eine Variable TName erstellt.
Da dafür die zu barbeitende Tabelle offen sein muss, braucht es das nicht.
Dann tut es auch ein ActiveSheet. Hab das ebenfalls geändert.
Probier jetzt mal:
Sub Kopieren2()
Dim a As Integer
Dim b As Integer
Dim i As Integer
Dim sS As Integer 'Spalte Sheet
Dim sT As Integer 'Spalte Task
Dim zS As Integer 'Zeile Sheet
Dim zT As Integer 'Zeile Task
Dim intJahr As Integer
Dim intMonat As Integer
i = 10
sT = 11
If Worksheets("Master Data").Cells(3, i).Value = "" Then
MsgBox "Keine Daten gefunden"
Exit Sub
Else
End If
Do
intMonat = Month(Worksheets("Master Data").Cells(2, i).Value)
intJahr = Year(Worksheets("Master Data").Cells(2, i).Value)
b = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row + 1
zS = b
For sS = 3 To 14
If Worksheets("Sheet1").Cells(1, sS).Value = intMonat Then
zT = 6
a = 0
Do
If ActiveSheet.Cells(zT, sT).Value = "" Then
Else
Worksheets("Sheet1").Cells(zS, 1).Value = intJahr
Worksheets("Sheet1").Cells(zS, sS).Value = ActiveSheet. _
Cells(zT, sT).Value
zS = zS + 1
zT = zT + 1
a = a + 1
End If
Loop Until ActiveSheet.Cells(zT, sT).Value = ""
sT = sT + 1
zS = b
intMonat = intMonat + 1
i = i + 1
Else
End If
Next sS
b = b + a
zS = zS + 1
Loop Until Worksheets("Master Data").Cells(3, i).Value = ""
End Sub
Mit dem Script hast du jetzt aber natürlich das Problem, wenn ein nuer Monat dazukommt und du das Makro wieder ausführst, wird nichts mehr überschrieben, sondern der neue Monat nebst allen alten Daten unten angehängt.
Ist das so gewollt?
Viele Grüße
Edmund