Daten von Vormonat in bestimmte Zelle
Vormonat
Hallo zusammen,
habe folgendes Problemchen. Ich benutze einen Button, um bestimmte Daten aus einem Quellsheet in ein Zielsheet (Sheet1) zu kopieren. Das hinterlegte Makro sucht dabei im Quellsheet (Sheet2) in Zeile 12 nach Datumsangaben vom heutigen Monat bis zum Monat in einem Jahr, also 12 Spalten. Diese 12 Monate werden ins Zielsheet kopiert sowie verschiedene Daten, die unter den Monatsnamen im Quellsheet stehen (siehe Code unten mit Beispiel Demand und Stock).
Nun ist es so, dass ich für den Stock auch noch die Daten vom Vormonat brauche. Die Daten für den Stock werden momentan für die Monate Nov 09 bis Nov 10 in den Bereich F9:R9 geschrieben.
Die Daten für den Stock vom Monat Oktober hätte ich gerne in der Zelle E9 stehen.
Sobald dann Dezember 09 ist, soll dann in E9 der Stock für Nov 09 geschrieben werden?
Jemand eine Idee, den Code zu erweitern?
Private Sub CommandButton1_Click()
Dim StartDate As Variant
Dim EndDate As Variant
Dim NewCol As Variant
Dim LastCol As Variant
Dim ColCount As Variant
Dim MyDate As Variant
Dim DestDates As Variant
Dim Dat As Variant
Dim StartCol As Integer
Dim MonthCount As Integer
Dim YearCount As Integer
StartDate = DateSerial(Year(Date), Month(Date), 1) 'Heutiger Monat, mit dem 1. Tag des Monats
EndDate = DateAdd("yyyy", 1, Date) ' 1 Jahr später
With Sheets("Sheet1") 'With bis End With fügt die aktuellen 12 Monate im Zielsheet ein
Set DestDates = .Range("F7:R7") 'Zielzellen für Monatsnamen _
_
StartCol = DestDates.Column 'Spalte 1 in DestDates
MonthCount = Month(StartDate) 'heutiger Monat ist Monat Nr. 1
YearCount = Year(StartDate) 'heutiges Jahr ist Jahr Nr. 1
For ColCount = StartCol To (StartCol + 12) '12 Spalten=1Jahr
MyDate = DateSerial(YearCount, MonthCount, 1) 'startet bei erstem Datum
.Cells(7, ColCount).NumberFormat = "mmm-yy"
.Cells(7, ColCount) = MyDate 'Datum wird in zeile 7 geschrieben
If MonthCount = 12 Then 'Falls Monat 12 erreicht
MonthCount = 1 'wird Monatsnr. wieder 1
YearCount = YearCount + 1 'und neues Jahr wird addiert
Else
MonthCount = MonthCount + 1 'falls Monat nicht 12, dann immer eine Monatsnr. _
addieren
End If
Next ColCount
End With
NewCol = 5 'column E
'ab hier werden Daten unter den Monatsnamen eingefügt:
Dim Demand As Integer
Dim Stock As Integer
With Sheets("Sheets2") 'Im Quell-Sheet "Sheet2" werden...
LastCol = .Cells(12, Columns.Count).End(xlToLeft).Column 'Spalten in Reihe 12 überprüft ( _
_
in Spalte 12 stehen die Monatsnamen)
For ColCount = 3 To LastCol
If IsDate(.Cells(12, ColCount)) Then 'falls heutiger Monat in Zeile 12 gefunden wird
MyDate = .Cells(12, ColCount).Value 'dann nimmt Mydate dessen Wert an
If MyDate >= StartDate And _
MyDate <= EndDate Then 'für alle Mydate dazwischen
Demand = .Cells(24, ColCount) 'markiert Zeile 24 im Quellsheet (=Demand)
Stock= .Cells(34, ColCount) (in Zeile 34 stehen stocks)
With Sheets("Sheet1") ‘Zielsheet
For Each Dat In DestDates
If Month(MyDate) = Month(Dat) And _
Year(MyDate) = Year(Dat) Then
Dat.Offset(1, 0) = Demand 'fügt markierte Daten 1 Zeile unter Datum ein und 0 _
Spalten versetzt
Dat.Offset(2, 0) = StockA_PTHF
Exit For
End If
Next Dat
End With
End If
End If
Next ColCount
End With
End Sub