Warum gibt mir Excel das Datum 01.01.1900

mit dem untenstehende Makro wollte ich mit Hilfe von DateSerial eine Datumszahlen- und eine Tagesnamenreihe erstellen, was auch ausgezeichnet funktioniert und dargestellt wird. Als ich aber in die ausgefüllte Tabelle auf dem Datum klicke, erschien mir das Datum 1 - 31 Januar 1900!! Als ich das entdeckte, war ich sehr frustriert.

Woran könnte das liegen? Habe ich ein Fehler in der Schreibweise gemacht? (Ich arbeite mit Exel 2003)

Ein herzlichen Dank im Voraus für eine Antwort!

Hier das Makr:

Sub WochenenTagesZahlenNamen()

Dim i As Integer, b As Integer
Dim Datum As Date
ThisWorkbook.Worksheets(„Tabelle4“).Activate
Application.ScreenUpdating = False
For i = 1 To 31

Datum = DateSerial(2011, 6, i)

Cells(i, 7).Offset(9, 0).Value = i
Cells(i, 7).NumberFormatLocal = „TT“

’ Tageszahlen 01, 02, …
If Weekday(Datum) = 1 Then
With Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0)
.Interior.Color = vbYellow
With Range(Cells(i, 6), Cells(i, 7)).Offset(9, 0)
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
End With
ElseIf Weekday(Datum) = 7 Then
With Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0)
.Interior.Color = vbYellow
With Range(Cells(i, 6), Cells(i, 7)).Offset(9, 0)
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
End With
Else
With Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0)
.Interior.Pattern = xlNone
.HorizontalAlignment = xlCenter
End With
End If

’ Tagesnamen So, Mo, …
For b = 1 To 31
Datum = DateSerial(2011, 6, b)
Cells(b, 6).Offset(9, 0).Value = b
Cells(b, 6).Offset(9, 0).NumberFormatLocal = „TTT“
Next b
Next i
Application.ScreenUpdating = True
End Sub

Lieber Erik,
nachfolgend meine Lösung:

Sub WochenenTagesZahlenNamen()

Dim i As Integer, b As Integer
Dim Datum As Date
ThisWorkbook.Worksheets(„Tabelle1“).Activate
Application.ScreenUpdating = False
For i = 1 To 31
Datum = DateSerial(2011, 6, i)
Cells(i, 6).Offset(9, 0).Value = Weekday(Datum)
Cells(i, 6).Offset(9, 0).NumberFormatLocal = „TTTT“
Cells(i, 7).Offset(9, 0).Value = i
Cells(i, 7).NumberFormatLocal = „0“
Cells(i, 8).Offset(9, 0).Value = Datum

Range(Cells(i, 6), Cells(i, 8)).Offset(9, 0).Font.Bold = False 'NICHT FETT
Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0).HorizontalAlignment = xlCenter

If Weekday(Datum) = 1 Or Weekday(Datum) = 7 Then
Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0).Interior.Color = vbYellow
Range(Cells(i, 6), Cells(i, 8)).Offset(9, 0).Font.Bold = True 'FETT
Else
Range(Cells(i, 6), Cells(i, 15)).Offset(9, 0).Interior.Pattern = xlNone
End If
Next i
Application.ScreenUpdating = True
End Sub

Sorry Erik,
Makroprogrammierung mit 2003 ist nicht mein Ding … Ich kann dir leider nicht helfen.
Safran

Hallo Erwin

Da war ich verblufft als ich Ihre Antwort postwendend bekam! Ein ganz herzlicher Dank! Und es läuft wie geschmiert! Auch danke für die extra Reihe des richtigen Datums, denn daran konnte ich erkennen, dass, wenn ich z.B. auf Tag klicke, dann das Datum 1. Jan 1900 im Eingabefenster erscheint, was aber keinerlei Einfluss hat.

Bei dem eingeben ein neuer Datum rutsch es nun ganz von alleine in der neue Position. Bei meiner Version setzte er die Samstage und Sonntage auch mal auf ein Mittwoch, bzw. Donnerstag……

Nun habe ich noch eine andere Frage, die mir gestern entstand. Ich wollte, dass das Dialogfeld „frmErstes“ in der Tabelle sichtbar wird und diese auch beim öffnen der Arbeitsmappe sofort sichtbar wird. Dafür habe ich untenstehende Code geschrieben aber es geschieht nicht was ich will. Woran könnte das liegen? (Aus der Entwicklungsumgebung mit F5 geht es natürlich)

Sub DialogAnzeigen()
frmErstes.Show
MsgBox „Dialogfeld geschlossen“
End Sub

Private Sub Workbook_Open()
frmErstes.Show
End Sub

Ein sonnigen Tag!
Erik

Hallo Erik,

der Code

Private Sub Workbook_Open()
frmErstes.Show
End Sub

bewirkt folgendes:
beim Öffnen der Excel-Mappe wird diese Anweisung ausgeführt und die UserForm „frmErstes“ wid angezeigt und kann nur geschlossen werden.

mit Deinem Modul

Sub DialogAnzeigen()
frmErstes.Show
MsgBox „Dialogfeld geschlossen“
End Sub

kannst Du diese UserForm jederzeit öffnen, jedoch die Anweisung im gleichen Atemzug

MsgBox „Dialogfeld geschlossen“

ist für mich nicht nachvollziehbar.

lg Erwin

Hallo Erwin,

Danke für Deine Antwort, die ich mir auch so gedacht habe, aber beim öfnen der Mappe passiert gar nichts, weit und Breit kein Dialogfeld! Warum wird es nicht im Speicher geladen?

liebe Grüße

Erik

PS. MsgBox „Dialogfeld geschlossen“ gehörte nicht dorthin

Erst nach Aufruf des Moduls: Sub DialogAnzeigen() wird dieser Code abgearbeitet.

Wo ich Code platziere damit diese aktiv werden, setzen gewisse Grundkenntnisse von VBA voraus. Diese sich selbst zu erarbeiten, daran kommst Du nicht vorbei.
Nur soviel: siehe Module, Klassenmodule, WorkbookOpen,WorksheetOpen …

Viel Spass und Geduld

Hallo Erwin,

mit viel Geduld und viel Spaß gelang mir schon mehr als das Eine, danke für den Tipp! Hast Du auch Eins für das folgendes Problem auf dem ich gestoßen bin?

Eine Möglichkeit ein ListBox mit Daten zu füllen ist, dass ich sie aus einer Spalte einer Tabelle, wo ich sie aufgelistet habe, heraushole. Ist es aber auch überhaupt möglich, wenn diese Daten in verschiedene einzelne Zellen z.B. F3, H3, K5, M5, P4 sich befinden, einzulesen? Über eine Hinweis würde ich mich freuen.

Lg
Erik

Hallo Erik,

lege eine ListBox auf ein Excel-Sheet. Danach über die Entwurfsansicht auf Eigenschaften nach Kategorien.

ListFillRange_ $A$1:blush:E$5 Füllbereich
ColumnCount = Anzahl der Spalten
ColumnWidhts: 50;50;0;50;50 bedeutet
Spalte A=sichtbar
Spalte B=sichtbar
Spalte C=nicht sichtbar …

Sei mir bitte nicht ungehalten, aber Du musst die Hilfe strapazieren. Nur so kannst Du dich weiterentwickeln.
Übrigens: ich kann einen VBA-Kurs nur empfehlen. Das spart Dir künftig hunderte Fragen.

lg Erwin

Lieber Erwin,

das finde ich eine klasse Antwort, ich werde mich bei der Hilfe und einem Grundkurs gründlich durcharbeiten! Und wenn mir dann immer noch eine Frage offenbleibt, hoffe ich bei Dir noch mal klingeln zu dürfen?

Schöne Grüßen
und Danke für die Antwort
Erik

Hey,
Sorry bin zur Zeit auf ner Mini-Weltreise und kann nicht helfen.

Gruss
Christian