Hey leute,
ich hab in einer Spalte Werte stehen in folgender Form:
Spalte M
Datum + 3 Tage
Date+2Wochen
Datum
Date
Datum+ 3 month
usw
Wie ihr seht stehen manchmal Leerzeichen drin und manchmal nicht, das Wort Datum kann auch in Englisch sein, sowie Tag, Monat, Jahr...
jetzt möchte ich ein Makro, dass diese Spalte durchläuft und immer das Wort Datum und Date mit dem aktuellen Datum ersetzt, und dann den Wert der dahinter steht auf das aktuelle Datum addiert und dann in der gleiche Zelle diese einzelne Datum ausgibt.
Also wenn in der Zelle stand: Date+ 4 Monate
soll heute drin stehen: 03.09.2011
hab das ganze mal probiert in eine Form zu bringen, aber das mit der Schleife klappt nicht ganz. Er nimmt nur die erste Zelle, wandelt diese richtig um und springt dann raus, bzw das Makro ist dann beendet und er geht die anderen Zellen nicht mehr durch.
Sieht jmd das Problem an meiner Schleife?
Sub Datum()
Dim c As Range
Dim a As Range
Dim b As Range
Dim d As Range
Dim e As Range
Dim f As Range
Dim anzMonat As Long
Dim i As Long
i = 0
With Worksheets("Datum").Columns(13)
Set c = .Find(what:="Datum", lookat:=xlPart)
Set f = .Find(what:="Date", lookat:=xlPart)
Set a = .Find(what:="*mo*", lookat:=xlPart)
Set b = .Find(what:="*w*", lookat:=xlPart)
Set d = .Find(what:="*ta*", lookat:=xlPart)
Set e = .Find(what:="*da*", lookat:=xlPart)
If Not IsEmpty(c) Or Not IsEmpty(f) Then
Do
If Not c Is Nothing Then
Do
If Len(c) < 3 Then
c.Value = Date
Else
For i = 3 To Len(c)
If IsNumeric(Mid(c, i, 1)) Then
anzMonat = Mid(c, i, 1)
If Not a Is Nothing Then
c.Value = DateAdd("m", CDbl(anzMonat), Date)
Else
If Not b Is Nothing Then
c.Value = DateAdd("ww", CDbl(anzMonat), Date)
Else
If Not c Is noting Then
c.Value = DateAdd("d", CDbl(anzMonat), Date)
Else
If Not d Is Nothing Then
c.Value = DateAdd("d", CDbl(anzMonat), Date)
Else
c.Value = DateAdd("d", CDbl(anzMonat), Date)
End If
End If
End If
End If
Exit For
End If
Next
End If
Set c = .FindNext(c)
Loop Until c Is Nothing
End If
If Not f Is Nothing Then
Do
If Len(f) < 3 Then
f.Value = Date
Else
For i = 3 To Len(f)
If IsNumeric(Mid(f, i, 1)) Then
anzMonat = Mid(f, i, 1)
If Not a Is Nothing Then
f.Value = DateAdd("m", CDbl(anzMonat), Date)
Else
If Not b Is Nothing Then
f.Value = DateAdd("ww", CDbl(anzMonat), Date)
Else
If Not c Is noting Then
f.Value = DateAdd("d", CDbl(anzMonat), Date)
Else
If Not d Is Nothing Then
f.Value = DateAdd("d", CDbl(anzMonat), Date)
Else
f.Value = DateAdd("d", CDbl(anzMonat), Date)
End If
End If
End If
End If
Exit For
End If
Next
End If
Set f = .FindNext(f)
Loop Until f Is Nothing
End If
Loop Until c Is Nothing Or f Is Nothing
End If
End With
End Sub
wär sau cool wenn mir jmd helfen könnte.
Thx, Mina
|