Falsche Dim bei Abfrage

Hallo zusammen.

Wir haben folgendes Problem:

Wir lesen aus einer Datei verschiedene Datums (sorry, falsches Wort - aber dafür eindeutig) aus. Die Variable ist als Date deklariert. Leider hat es sich nun im Laufe der Zeit ergeben, dass in den entsprechenden Zellen eben nicht immer wirklich ein Datum, sondern z.B. „KW 34“ oder auch „Anfang Mai“ steht. An dieser Stelle kriegen wir einen Fehler, weil es sich eben nicht um ein Datum handelt.

Mögliche Ansätze meinerseits sind:

  1. Abfangen einer Fehlermeldung. Dies scheitert bisher dahingehend, dass ich den Error leider bisher nicht geschafft habe auf Null zu setzen. Allerdings kenne ich mich mit Error nicht so gut aus und bevorzuge lieber Variante 2.

  2. Abfrage, ob es sich bei dem Wert, der ausgelesen werden soll, um ein Datum handelt. Dies am besten durch eine If-Abfrage, weil ich hier dann auch gleich eine E-Mail verschicken könnte und die Datei überspringen könnte.

Hat wer einen Code-Schnipsel für einen oder beide Variante? Als anfang hier kurz der programmierte Schnipsel:

Dim VB as Date
VB = ActiveCell

Vielen Dank schon einmal und Grüße.

Hallo,

Du kannst prüfen, ob der Wert ein gültiges Datum ist.

If IsDate(Variable oder Zellinhalt) = True Then
'...
End If

Beim Code kann ich Dir nicht helfen, von Excel habe ich keine Ahnung.

Gruß Rainer

Hallo Rainer.

Der Code ist super und im Ergebnis genau das, was ich brauche. Damit brauche ich jetzt auch nicht den blöden Error nutzen. Den Code zum Verschicken einer E-Mail habe ich schon, den brauche ich also nicht mehr.

Vielen Dank ncoh einmal.

Hallo Kackei,

Wir lesen aus einer Datei verschiedene Datums (sorry, falsches
Wort - aber dafür eindeutig) aus.

ich benutze Datümer.

  1. Abfangen einer Fehlermeldung. Dies scheitert bisher
    dahingehend, dass ich den Error leider bisher nicht geschafft
    habe auf Null zu setzen.

Schreibe im Editor „Err.“ und schau dir an was Intellisense dir anbietet, bzw. F1…
Err.Clear setzt auf 0

Als anfang hier kurz der programmierte Schnipsel:

Dim VB as Date

VB = ActiveCell

Bitte nicht so lange Codes zeigen, braucht man ja Stunden um die durchzulesen *grins*

Gruß
Reinhard

Hallo Reinhard

ich benutze Datümer.

Acuh ein schönes Wort - muss ich demnächst mal benutzen, dass hört sich so herrlich blöd an.

Schreibe im Editor „Err.“ und schau dir an was Intellisense
dir anbietet, bzw. F1…
Err.Clear setzt auf 0

Err.Clear könnte genau das sein, was mir immer gefehlt hat. In eine Schleife eingepackt hat der Code nämlich meist angehalten, wenn er einmal den Fehler registriert hat und beim nächsten Durchlauf hatte er ein Problem.

Als anfang hier kurz der programmierte Schnipsel:

Dim VB as Date

VB = ActiveCell

Bitte nicht so lange Codes zeigen, braucht man ja Stunden um
die durchzulesen *grins*

na ja - das war leider der ganze Code zu dem Problem. Ist ein älterer Code, den ich jetzt dann im Zuge des Problems angepasst habe (von wegen ActiveCell). Das wirklcih interessante kam ja durch Rainer, was meinen bisherigen Code ersetzt hatte - ich gebe zu, ich hätte eher mit einem Zusatz gerechent. Aber so geht es ja zum Glück auch.

P.S.: Habe die Änderugn bereits erfolgreich nutzen können. Danke also noch mal für die schnelle Hilfe.

Grüße.

hallo kackei,

ich benutze Datümer.

Acuh ein schönes Wort - muss ich demnächst mal benutzen, dass
hört sich so herrlich blöd an.

im IT benutzen daß einige, möglich daß es mal im Duden auftaucht.
Wenn jmd. behauptet das wäre falsch, sag halt Dutum und Irrtum hätten den gleichen Wortstamm, daher also Irrtümer und Datümer, da muß er erstmal das Gegentum oder die Gegentümer beweisen/vorlegen :smile:)

Err.Clear könnte genau das sein, was mir immer gefehlt hat. In
eine Schleife eingepackt hat der Code nämlich meist
angehalten, wenn er einmal den Fehler registriert hat und beim
nächsten Durchlauf hatte er ein Problem.

Hier ein häufiges Beispiel wo/wie man das einsetzt:
Aufruf von Excel von Word heraus:

Dim ExcelObjekt As Excel.Application
On Error Resume Next
 Set ExcelObjekt = GetObject(, "Excel.Application")
 If Err.Number = 429 Then
 '--\>Fehler bei ActiveX-Erstellung, vermutlich ist Excel nicht gestartet!
 Err.Clear
 Set ExcelObjekt = CreateObject("Excel.Application")
 If Err.Number = 429 Then
 Err.Clear
 MsgBox "Es konnte nicht auf 'Microsoft Excel' zugegriffen werden! Vielleicht ist Excel nicht installiert!", vbExclamation, "Fehler beim Zugriff auf MS Excel"
 End If
 End If
End if

Und für den Einsatz von Err google mal nach
Errorhandler Err.Number
(Errorhandler ist frei wählbarer Name in dem fall)

Gruß
Reinhard