![如何在 Excel 上手动插入日期时设置日期格式,而不更改区域设置?](https://linux22.com/image/1453306/%E5%A6%82%E4%BD%95%E5%9C%A8%20Excel%20%E4%B8%8A%E6%89%8B%E5%8A%A8%E6%8F%92%E5%85%A5%E6%97%A5%E6%9C%9F%E6%97%B6%E8%AE%BE%E7%BD%AE%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%9B%B4%E6%94%B9%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
在我的语言环境中,日期以 dd/mm/yyyy 或其变体(包括 dd-mm-yy)的形式插入。我制作了一个 Excel 表单(在普通 Excel 文件中),已经格式化为以 dd/mm/yyyy 显示日期,但当我输入“05/04/2015”时,它将显示为“04/05/2015”。我知道可以通过将区域设置更改为我的本地设置来解决此问题,但我需要将此表单分发给许多不了解如何更改区域设置的人,并且假设没有人可以教我如何更改,因此我的问题:
有没有办法输入“05/04/2015”并被识别为“2015 年 4 月 5 日”,而无需更改区域设置?
补充说明:当我指的是“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:04/05/2015
单元格 B1: =DATE( RIGHT(A1,4), LEFT(A1,2), MID(A1,4,2) )
选项 2:要求用户在三个单独的单元格或字段中输入“日”、“月”和“年”,这可能会更好或更坏,具体取决于您的设置。
无论如何,祝你好运!
答案4
当我使用已有的相同格式为单元格分配新数据值时,我遇到了同样的问题
尽管目标单元格的格式相同,但 2018 年 2 月 12 日将交换为 2018 年 12 月 2 日。
使用 ..Range("B10").Value = DateValue(newdate) 确实解决了我的问题