在Excel上手動插入日期時如何設定日期格式,而不更改區域設定?

在Excel上手動插入日期時如何設定日期格式,而不更改區域設定?

在我的區域設定中,日期插入為 dd/mm/yyyy 或其變體(包括 dd-mm-yy)。我製作了一個Excel 表單(在普通Excel 檔案中),已將日期格式化為顯示日期為dd/mm/yyyy,但是當我輸入“05/04/2015”時,它將顯示為“04/05 /2015」。我知道這可以透過將區域設定更改為我的本地設定來解決,但我需要將此表格分發給許多不了解更改區域設定的人,並假設沒有人可以教如何操作,因此我的問題是:

有沒有辦法輸入“05/04/2015”並被識別為“5 April 2015”,而無需更改區域設定?

附加說明:當我的意思是“4 May 15”(輸入 4/5/15)時,Excel 會將其識別為“5 April 15”,因為 Excel 將輸入視為“mm/dd/yy”格式。 我需要將 Excel 的預設行為更改為“dd/mm/yyyy”因為這是使用者輸入的方式。

如果可能,該設定還應包含/嵌入到文件中,以允許最終用戶使用該表單,甚至無需更改設定。

我不熟悉宏和 VBA,但願意嘗試這些:)

編輯:這與我的問題有關: 如何將MS-EXCEL公式列中的日期格式從dd-mm-yyyy改為dd-mm-yy?

但我不需要更改整個公式欄,只要 Excel 識別出我正在以 dd/mm/yy 格式輸入即可。

答案1

Worksheet_Change事件基本上可以完成您所要求的內容,但您需要確保用戶想要改變事情。我'Yes/No'在解決方案中新增了一個選擇框,以防止任何意外變更。在沒有選擇框的情況下執行此操作是有風險的,因為如果您嘗試編輯現有值,它會變更回原始格式。

此程式碼應該「存在」在您希望其執行操作的工作表的 VBA 程式碼中:

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

答案2

我完全知道你在說什麼。我喜歡輸入 YY-MM-DD。 Excel 中沒有將其變更為您想要的設定。您想要的設定在 Windows 中。它隱藏在控制面板“時間和語言”的某處。

我必須進入高級設定“更改時間和日期格式”並更改“短日期”設定。

根據您使用的作業系統,指示可能會略有不同。

希望這可以幫助。

答案3

我認為您無法更改預設值。當你從海外匯入資料時修復起來尤其尷尬。

我能想到的最不混亂的方法是某種手動方式...


選項 1:我們可以接受以下輸入文字格式化並將它們放入儲存格中,這樣 Excel 就不會嘗試將它們解釋為日期。然後,在相鄰儲存格中,我們可以將函數 DATE 與 LEFT、RIGHT 和 MID 一起使用。例如(指定使用者必須輸入完整的日期 MM/DD/YYYY):

單元格 A1:2015 年 4 月 5 日

單元格 B1:=日期( 右(A1,4),左(A1,2),中(A1,4,2) )


選項 2:請使用者將「日」、「月」和「年」輸入到三個單獨的儲存格或欄位中,這可能會更好或更差,具體取決於您的設定。

無論如何,祝你好運!

答案4

使用與已有的相同格式為單元格分配新資料值時,我遇到了相同的問題

12-02-2018 將切換至 2018 年 12 月 2 日,儘管目標儲存格的格式相同。

使用 ..Range("B10").Value = DateValue(newdate) 確實解決了我的問題

相關內容