Discussion:
Excel vba: DateValue auf ganze Spalte anwenden
(zu alt für eine Antwort)
freakazoid
2006-07-21 09:34:48 UTC
Permalink
Hallo!

Ich möchte gerne Spalte A von Tabelle1 mit DateValue formatieren.
Ich habe folgenden Code:

Sheets("Tabelle1").Range("A:A").Value =
DateValue(Sheets("Tabelle1").Range("A:A").Value)

Leider bekomme ich eine Fehlermeldung "Typen unverträglich"

Wie heißt der Code richtig?
unknown
2006-07-21 10:45:23 UTC
Permalink
Hallo ???,
DateValue ist eine VBA-Funktion.

Syntax: DateValue(Datum)

Das erforderliche Argument Datum ist normalerweise ein
Zeichenfolgenausdruck, der ein Datum aus dem Bereich vom 1. Januar 100
bis zum 31. Dezember 9999 repräsentiert, z.B.: DateValue("21.07.2006")

Für die Formatierung eines Bereiches setzt du die
NumberFormat-Eigenschaft ein, z.B.:
ActiveCell.NumberFormat = "dd.mm.yyyy"

MfG Frank
_________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Website: http://www.xl-faq.de
# Auftragsprojekte #
# Live Online Schulung #
freakazoid
2006-07-24 06:01:19 UTC
Permalink
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.

Dim suchstring As String
Dim prüfbereich As Range
Dim ergebniszeile As Integer

suchstring = lbl_gehen.Caption

Set prüfbereich =
Worksheets("Tabelle1").Range("A:A").Find(DateValue(suchstring))

ergebniszeile = prüfbereich.Row

Worksheets("Tabelle1").Cells(ergebniszeile, 4).Value = txt_time
Post by unknown
Hallo ???,
DateValue ist eine VBA-Funktion.
Syntax: DateValue(Datum)
Das erforderliche Argument Datum ist normalerweise ein
Zeichenfolgenausdruck, der ein Datum aus dem Bereich vom 1. Januar 100
bis zum 31. Dezember 9999 repräsentiert, z.B.: DateValue("21.07.2006")
Für die Formatierung eines Bereiches setzt du die
ActiveCell.NumberFormat = "dd.mm.yyyy"
MfG Frank
_________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Website: http://www.xl-faq.de
# Auftragsprojekte #
# Live Online Schulung #
Thomas Ramel
2006-07-24 06:39:08 UTC
Permalink
Grüezi freakazoid

freakazoid schrieb am 24.07.2006
Post by freakazoid
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.
Damit zäumst Du das Pferd aber am Schwanz auf, denn grundsätzlich handelst
Du dir mehr Schwierigkeiten ein, wenn Du nicht das 'normale' Datums-
und/oder Zeitformat verwendest.

.Find sucht beim Datum nach dem US-Format - formatiere deinen Suchstring
also entsprechend, dann wird das Datum auch gefunden.

Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,"mm.dd.yyyy"))

BTW: mit welcher Excel-Version arbeitest Du?
Willst Du .Find in einer Function oder einer Sub anwenden?



Mit freundlichen Grüssen
Thomas Ramel (@work)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
freakazoid
2006-07-24 07:32:23 UTC
Permalink
Ich arbeite mit Excel 2000.
Ich will .find in einer Sub anwenden.
Post by Thomas Ramel
Grüezi freakazoid
freakazoid schrieb am 24.07.2006
Post by freakazoid
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.
Damit zäumst Du das Pferd aber am Schwanz auf, denn grundsätzlich handelst
Du dir mehr Schwierigkeiten ein, wenn Du nicht das 'normale' Datums-
und/oder Zeitformat verwendest.
.Find sucht beim Datum nach dem US-Format - formatiere deinen Suchstring
also entsprechend, dann wird das Datum auch gefunden.
Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,"mm.dd.yyyy"))
BTW: mit welcher Excel-Version arbeitest Du?
Willst Du .Find in einer Function oder einer Sub anwenden?
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
freakazoid
2006-07-24 07:32:25 UTC
Permalink
Ich arbeite mit Excel 2000.
Ich will .find in einer Sub anwenden.
Post by Thomas Ramel
Grüezi freakazoid
freakazoid schrieb am 24.07.2006
Post by freakazoid
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.
Damit zäumst Du das Pferd aber am Schwanz auf, denn grundsätzlich handelst
Du dir mehr Schwierigkeiten ein, wenn Du nicht das 'normale' Datums-
und/oder Zeitformat verwendest.
.Find sucht beim Datum nach dem US-Format - formatiere deinen Suchstring
also entsprechend, dann wird das Datum auch gefunden.
Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,"mm.dd.yyyy"))
BTW: mit welcher Excel-Version arbeitest Du?
Willst Du .Find in einer Function oder einer Sub anwenden?
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
freakazoid
2006-07-24 07:32:28 UTC
Permalink
Ich arbeite mit Excel 2000.
Ich will .find in einer Sub anwenden.
Post by Thomas Ramel
Grüezi freakazoid
freakazoid schrieb am 24.07.2006
Post by freakazoid
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.
Damit zäumst Du das Pferd aber am Schwanz auf, denn grundsätzlich handelst
Du dir mehr Schwierigkeiten ein, wenn Du nicht das 'normale' Datums-
und/oder Zeitformat verwendest.
.Find sucht beim Datum nach dem US-Format - formatiere deinen Suchstring
also entsprechend, dann wird das Datum auch gefunden.
Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,"mm.dd.yyyy"))
BTW: mit welcher Excel-Version arbeitest Du?
Willst Du .Find in einer Function oder einer Sub anwenden?
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
freakazoid
2006-07-24 07:38:04 UTC
Permalink
Hallo!
Er findet das Datum immernoch nicht.

Dim suchstring As String
Dim prüfbereich As Range
Dim ergebniszeile As Integer

suchstring = lbl_gehen.Caption

Set prüfbereich =
Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,
"mm.dd.yyyy"))

ergebniszeile = prüfbereich.Row

Worksheets("Tabelle1").Cells(ergebniszeile, 4).Value = txt_gehen
Post by Thomas Ramel
Grüezi freakazoid
freakazoid schrieb am 24.07.2006
Post by freakazoid
Wenn ich aber mit NumberFormat rangehe, dann findet mir Excel mit
"find" das gesuchte datum nicht mehr.
Damit zäumst Du das Pferd aber am Schwanz auf, denn grundsätzlich handelst
Du dir mehr Schwierigkeiten ein, wenn Du nicht das 'normale' Datums-
und/oder Zeitformat verwendest.
.Find sucht beim Datum nach dem US-Format - formatiere deinen Suchstring
also entsprechend, dann wird das Datum auch gefunden.
Worksheets("Tabelle1").Range("A:A").Find(Format(suchstring,"mm.dd.yyyy"))
BTW: mit welcher Excel-Version arbeitest Du?
Willst Du .Find in einer Function oder einer Sub anwenden?
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Thomas Ramel
2006-07-24 08:01:58 UTC
Permalink
Grüezi freakazoid

freakazoid schrieb am 24.07.2006
Post by freakazoid
Er findet das Datum immernoch nicht.
OK, wie gesagt (und selbst nicht ausführlich nachgestellt):

Arbeite mit den korrekten Objekten und Formaten, dann klappt es. Wandle die
.Caption in ein echtes Datum um und halte die Spalte A ebenfalls korrekt im
Dtusmformat:


Dim datSuch As Date
Dim rngPruef As Range


datSuch = DateValue(lbl_gehen.Caption)

Set rngPruef = Worksheets("Tabelle1").Range("A:A").Find(datSuch)

Worksheets("Tabelle1").Cells(rngPruef.Row, 4).Value = txt_gehen


Was noch fehlt ist eine Fehlerbehandlung wenn das Datum mal wirklich nicht
vorhanden ist.



| [Fullquote von 40tude-Dialog[1] entsorgt]



Mit freundlichen Grüssen
Thomas Ramel (@work)


Fussnote(n):
------------
[1] Programm: http://www.40tude.com/dialog/
Anleitung: http://www.gaehn.org/software/40tude-dialog/tutorial/
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Loading...