Hallo!
Ich durchsuche per VBA eine Range, um eine Zelle mit bestimmten Inhalt zu finden:
x = Date + 5 + 5
Set c = Range(„A1:smiley:9“).Find(x, LookIn:=xlValues)
so weit - so gut: die Zelle wird gefunden, wenn das richtige Datum enthalten ist (angezeigt als „19.04.2010“)
Aber sowie ich das Datum in der Zelle irgendwie formatiere (aktuell brauche ich das Format „T.MMMM“, also z.B „19.April“), so findet der Find-Befehl in keinem Fall die Zelle.
Ich habe schon (bestimmt nicht!) alles ausprobiert - ohne Erfolg. Aber irgendeine Möglichkeit muss es doch geben, um die Zelle zu finden! Bitte: Hilfe-Hilfe-Hilfe
Danke
Wolfram
Set c = Range(„A1:smiley:9“).Find(x, LookIn:=xlValues)
so weit - so gut: die Zelle wird gefunden, wenn das richtige
Datum enthalten ist (angezeigt als „19.04.2010“)
Aber sowie ich das Datum in der Zelle irgendwie formatiere
(aktuell brauche ich das Format „T.MMMM“, also z.B
„19.April“), so findet der Find-Befehl in keinem Fall die
Zelle.
Hallo Wolfram,
T.MMM reicht.
Sub tt()
Dim x As Date, c As Range
x = Date + 10
Set c = Range("A1:smiley:9").Find(x, LookIn:=xlFormulas, lookat:=xlWhole)
If Not c Is Nothing Then MsgBox c.Address
End Sub
Gruß
Reinhard
Hallo Reinhard!
Vielen Dank für die Lösung, es funktioniert. Übrigends: mit T.MMM bekomme ich als Anzeige „19.Apr“, erst mit 4 M wird der Monatsname ausgeschrieben.
vielen Dank
Wolfram
Moin, Reinhard,
T.MMM reicht.
bist Du sicher? Mit dem Ende
If Not c Is Nothing Then
MsgBox c
Else
MsgBox "nix da"
End If
sehe ich (Office 2000), dass nur die Formatierung TT.MM.JJJJ flutscht.
Gruß Ralf
hallo Ralf,
T.MMM reicht.
bist Du sicher?
nö, T.MMMM war schon richtig, ich irrte mich.
If Not c Is Nothing Then
MsgBox c
Else
MsgBox „nix da“
End If
sehe ich (Office 2000), dass nur die Formatierung TT.MM.JJJJ
flutscht.
Es liegt daran wie die Daten in die Zellen kommen, schau dir mal die Zellenformatierung in C:smiley: an und wie es dargestellt wird.
Option Explicit
Sub test()
Dim x As Date, c As Range, Erste As String
Range("A1:F10").Clear
Call tt
Call tt2
Call tt3
Call tt4
x = Date + 10
With Worksheets(1).Range("A1:smiley:9")
Set c = .Find(x, LookIn:=xlFormulas, lookat:=xlWhole)
If Not c Is Nothing Then
Erste = c.Address
Do
c.Interior.ColorIndex = 34
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address Erste
End If
End With
End Sub
Sub tt()
Range("A1").NumberFormat = "d.MMM"
Range("A2").NumberFormat = "d.MMMM"
Range("A3").NumberFormat = "dd.MM.YYYY"
Range("A4").NumberFormat = "YYYYMMDD"
Range("A1").Value = Date + 10
Range("A2").Value = Date + 10
Range("A3").Value = Date + 10
Range("A4").Value = Date + 10
End Sub
'
Sub tt2()
Range("B1").Value = Date + 10
Range("B2").Value = Date + 10
Range("B3").Value = Date + 10
Range("B4").Value = Date + 10
Range("B1").NumberFormat = "d.MMM"
Range("B2").NumberFormat = "d.MMMM"
Range("B3").NumberFormat = "dd.MM.YYYY"
Range("B4").NumberFormat = "YYYYMMDD"
End Sub
'
Sub tt3()
Range("C1").Value = "20.04.2010"
Range("C2").Value = "20.04.2010"
Range("C3").Value = "20.04.2010"
Range("C4").Value = "20.04.2010"
Range("C1").NumberFormat = "d.MMM"
Range("C2").NumberFormat = "d.MMMM"
Range("C3").NumberFormat = "dd.MM.YYYY"
Range("C4").NumberFormat = "YYYYMMDD"
End Sub
'
Sub tt4()
Range("D1").NumberFormat = "d.MMM"
Range("D2").NumberFormat = "d.MMMM"
Range("D3").NumberFormat = "dd.MM.YYYY"
Range("D4").NumberFormat = "YYYYMMDD"
Range("D1").Value = "20.04.2010"
Range("D2").Value = "20.04.2010"
Range("D3").Value = "20.04.2010"
Range("D4").Value = "20.04.2010"
End Sub
Gruß
Reinhard
Moin, Reinhard,
Es liegt daran wie die Daten in die Zellen kommen, schau dir
mal die Zellenformatierung in C:smiley: an und wie es dargestellt
wird.
und was tut dann der arme Hund, der mit Formatierung nach Scheffes Wünschen konfrontiert wird? Formatierung für den Vergleich ändern und dann zurückändern? Das kann ja heiter werden.
Gruß Ralf
ps: Mit dem NumberFormat hast Du mich sauber auflaufen lassen - hat ne ganze Zeit gedauert, bis ich NumberFormatLocal gefunden habe 
Hallo Ralf,
Es liegt daran wie die Daten in die Zellen kommen, schau dir
mal die Zellenformatierung in C:smiley: an und wie es dargestellt
wird.
und was tut dann der arme Hund, der mit Formatierung nach
Scheffes Wünschen konfrontiert wird? Formatierung für den
Vergleich ändern und dann zurückändern? Das kann ja heiter
werden.
echt? Das wäre super, endlich der graue Himmel weg
)
Und der Hund *Schulterzuck*, der isses doch gewöhnt daß ihn sein jefe tritt. Völlig gleich ob er gute Leistungen, er wird getrten damit der Jefe Jefe bleibt.
ps: Mit dem NumberFormat hast Du mich sauber auflaufen lassen
- hat ne ganze Zeit gedauert, bis ich NumberFormatLocal
gefunden habe
Also habe ich zu deiner Weiterbildung beigetragen, ist doch schön 
Und das Grundproblem ist wie immer MS. Wie die mit datümern ugehen ist mir nicht immer verständlich. Ich hab schon nachgelesen wie es zu diesen 1904-Datumswerten kam, hängt mit dem damaligen Marktführer Multiplan zusammen.
Insofern ist das mit 1904 verständlich. Wobei ich das tunlichst vermeide.
Verständlich ist auch daß die Ganzzahl den Tag angeben und die nachkommastellen quasi Stunden, Minuten…
ABER, wenn ich eine Zelle in der 4711 steht, evtl. aus einem Fremdprogramm importiert und als Text eingestuft worden, und ich formatiere diese Zelle als Zahl, dann sollte bitteschön das dann auch eine Zahl werden für Excel.
Und das klappt nicht
Genauso bei datumsproblemen.
Gruß
Reinhard
Grüezi Reinhard
ABER, wenn ich eine Zelle in der 4711 steht, evtl. aus einem
Fremdprogramm importiert und als Text eingestuft worden, und
ich formatiere diese Zelle als Zahl, dann sollte bitteschön
das dann auch eine Zahl werden für Excel.
Und das klappt nicht
Genauso bei datumsproblemen.
Excel will halt nach dem Umformatieren den Inhalt nochmals in die Zelle geschrieben haben, was mit den zwie folgenden Abläufen hier noch immer zuverlässig geklappt hat: 
Mit freundlichen Grüssen
Thomas Ramel