Hallo zusammen,
mein Problem ist folgendes:
ich habe ein Makro geschrieben, welches im Sheet "Übersicht" nach der Zelle mit dem Inhalt "Start" sucht. Der Inhalt der Zelle rechts neben der "Start"-Zelle wird dann kopiert und in das Sheet "Import" übertragen.
Das ist alles kein Problem... hier mal dieser teil vom Code:
Code: |
With Worksheets("Übersicht")
For Each rng In Sheets("Übersicht").Range("D" & columnEndD & ":D2")
If rng.Value = "Start" And cAnfang < indexA Then
Sheets("Import").Cells(cAnfang, 7) = Sheets("Übersicht").Cells(rng.Row, rng.Column + 1)
Columns("G:G").EntireColumn.AutoFit
Columns(7).NumberFormat = ("DDD dd.mm.yy")
cAnfang = cAnfang + 1
End If
Next rng
End With |
das problem ist jetzt dass dieser Starttermin in folgenden Formen vorliegen kann:
z.B.
12.03.2012
to + 3 Monate oder Jahre oder Tage
to + 4 month oder years oder days
To
tO
t0 ....
T0....
to, t0, To, T0, TO, tO soll durch das aktuelle Datum ersetzt werden.
der Wert der dahinter steht soll dann auf das Datum addiert werden.
Also als Beispiel:
Wenn heute der 17.06.2011 ist und in der Zeile steht
to + 3 days
soll am Ende im Sheet import in der Zeile das Datum 20.06.2011 stehen
das ist auch kein Problem. das funktioniert auch.
ABER wenn ich in die Zeile jetzt nur noch ein Datum schreibe und da nicht T0 + ... steht, dann rechnet mir Excel das Datum trotzdem um. Ich versteh aber nicht wieso.
Hier mal der ganze Code.
Ich hoffe dass ihr mir helfen könnt, ich wäre sehr dankbar!
Code: |
'sucht in Import in Spalte Anfang nach *to* und *t0*, ersetzt es druch das aktuelle Datum und rechnet den
'Wert der dahinter steht zum aktuellen Datum dazu
lRow = Range("G65335").End(xlUp).Row
vEng = Array("to", "Years", "Months", "Weeks", "Days", "Year", "Month", "Week", "Day")
vGer = Array("t0", "Jahre", "Monate", "Wochen", "Tage", "Jahr", "Monat", "Woche", "Tag")
vInt = Array("DATE", "#yyyy", "#m", "#ww", "#d", "#yyyy", "#m", "#ww", "#d")
For Each rng In Range("G2:G" & lRow).Cells
dRet = Date
With rng
sText = .Text
For i = 0 To UBound(vEng) - 1
sText = Replace(sText, vEng(i), vInt(i), , , vbTextCompare)
sText = Replace(sText, vGer(i), vInt(i), , , vbTextCompare)
Next i
vRng = Split(Replace(sText, " ", ""), "+")
If UCase(vRng(0)) = "DATE" Then
For i = 1 To UBound(vRng)
dRet = DateAdd(Mid(vRng(1), InStr(1, vRng(1), "#") + 1), Mid(vRng(1), 1, InStr(1, vRng(1), "#") - 1), Date)
Next i
End If
.Value = dRet
End With
Next rng |
Vielen Dank!!!!
glg Alisha
|