Wie lässt sich das Datumsformat beim manuellen Einfügen eines Datums in Excel festlegen, ohne die regionalen Einstellungen zu ändern?

Wie lässt sich das Datumsformat beim manuellen Einfügen eines Datums in Excel festlegen, ohne die regionalen Einstellungen zu ändern?

In meiner Region wird das Datum als TT/MM/JJJJ oder in Variationen davon (einschließlich TT-MM-JJ) eingefügt. Ich habe ein Excel-Formular (in einer normalen Excel-Datei) erstellt, das bereits so formatiert ist, dass das Datum als TT/MM/JJJJ angezeigt wird, aber wenn ich „05/04/2015“ eingebe, wird es als „04/05/2015“ angezeigt. Ich weiß, dass dies gelöst werden kann, indem ich die regionale Einstellung auf meine lokale Einstellung ändere, aber ich muss dieses Formular an viele Leute verteilen, die nicht wissen, wie man die regionale Einstellung ändert, und davon ausgehen, dass niemand ihnen beibringen kann, wie das geht, daher meine Frage:

Gibt es eine Möglichkeit, „05.04.2015“ einzugeben und als „5. April 2015“ erkannt zu werden, ohne die regionalen Einstellungen ändern zu müssen?

Zusätzlicher Hinweis: Wenn ich „4. Mai 15“ meine (eingegeben als 05.04.15), erkennt Excel dies als „5. April 15“, da Excel Eingaben im Format „mm/tt/jj“ akzeptiert. Ich muss das Standardverhalten von Excel so ändern, dass es „tt/mm/jjjj“ verwendet.da dies die Art und Weise ist, wie die Benutzer ihre Eingaben vornehmen.

Wenn möglich, sollte die Einstellung auch in die Datei aufgenommen/eingebettet werden, damit Endbenutzer das Formular verwenden können, ohne die Einstellung ändern zu müssen.

Ich kenne mich mit Makros und VBA nicht aus, bin aber bereit, diese auszuprobieren :)

BEARBEITEN: Dies hängt mit meiner Frage zusammen: Wie ändere ich das Datumsformat in der Formelleiste von MS-EXCEL von TT-MM-JJJJ in TT-MM-JJ?

aber ich muss nicht die ganze Formelleiste ändern, solange Excel erkennt, dass ich im Format TT/MM/JJ tippe.

Antwort1

Das Worksheet_ChangeEreignis könnte im Wesentlichen das erreichen, was Sie verlangen, aber Sie müssen sicher sein, dass der Benutzer Änderungen beabsichtigt. Ich habe 'Yes/No'meiner Lösung ein Auswahlfeld hinzugefügt, um versehentliche Änderungen zu verhindern. Dies ohne Auswahlfeld zu tun, ist riskant, denn wenn Sie versuchen, einen vorhandenen Wert zu bearbeiten, wird dieser wieder auf die ursprüngliche Formatierung zurückgesetzt.

Dieser Code sollte im VBA-Code für das Arbeitsblatt enthalten sein, auf das er angewendet werden soll:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iDay, iMonth, iYear As Integer
Dim solutionRange As Range

'the cells you want the date to change for
Set solutionRange = Range("D4:D12")

'only triggers if the user's changing one cell
If Target.Count = 1 Then
    If (Not (Intersect(solutionRange, Target) Is Nothing) And (Target.Value > 0)) Then
        'disable application events so this change doesn't trigger itself
        Application.EnableEvents = False

        iDay = Left(Target.Value, 2)
        iMonth = Mid(Target.Value, 4, 2)
        iYear = Right(Target.Value, 4)

        ' Give the user a choice to say whether they need the date changed. You *can* remove both the 'If' and 'End If' if you really need to, but I'd strongly suggest keeping them.
        If (MsgBox("Have you entered your date in the format 'MM/DD/YYYY'?", vbYesNo) = vbYes) Then
            Target.Value = DateValue(iMonth & "/" & iDay & "/" & iYear)
        End If

        Application.EnableEvents = True
    End If
End If
End Sub

Antwort2

Ich weiß genau, wovon Sie sprechen. Ich tippe gerne JJ-MM-TT. Die Einstellung, um es in das gewünschte Format zu ändern, gibt es nicht in Excel. Die gewünschte Einstellung gibt es in Windows. Sie ist irgendwo in der Systemsteuerung unter „Zeit und Sprache“ versteckt.

Ich musste zu einer erweiterten Einstellung „Uhrzeit- und Datumsformat ändern“ gehen und die Einstellung „Kurzes Datum“ ändern.

Je nachdem, welches Betriebssystem Sie verwenden, können die Anweisungen etwas anders sein.

Hoffe das hilft.

Antwort3

Ich glaube nicht, dass Sie die Vorgabe ändern können. Das ist besonders schwierig zu beheben, wenn Sie Daten aus Übersee importieren.

Der am wenigsten komplizierte Weg, der mir hierfür einfällt, ist eine manuelle Methode ...


Option 1: Wir könnten die Eingaben akzeptieren inTextformatieren und in die Zellen einfügen, damit Excel nicht versucht, sie als Datum zu interpretieren. Dann könnten wir in einer angrenzenden Zelle die Funktion DATE zusammen mit LEFT, RIGHT und MID verwenden. Beispiel (geben Sie an, dass der Benutzer das Datum vollständig als MM/TT/JJJJ eingeben muss):

Zelle A1: 04.05.2015

Zelle B1: =DATUM( RECHTS(A1,4), LINKS(A1,2), MITTE(A1,4,2) )


Option 2: Fordern Sie den Benutzer auf, „Tag“, „Monat“ und „Jahr“ in drei separate Zellen oder Felder einzugeben. Je nach Ihrer Konfiguration kann dies besser oder schlechter sein.

Wie auch immer, viel Glück!

Antwort4

Ich hatte das gleiche Problem, als ich meiner Zelle einen neuen Datenwert im gleichen Format zuwies, das sie bereits hatte

Der 12.02.2018 würde auf den 2. Dezember 2018 verschoben, obwohl das Format der Zielzelle dasselbe wäre.

Die Verwendung von ..Range("B10").Value = DateValue(newdate) hat mein Problem gelöst

verwandte Informationen