在 Excel 表中,当单元格的值从日期更改为文本(或数字)时,如何将单元格的日期格式转换为常规格式?

在 Excel 表中,当单元格的值从日期更改为文本(或数字)时,如何将单元格的日期格式转换为常规格式?

我发现 excel 表格中的这一点非常奇怪(或者可能只是我个人的感受),默认情况下,excel 表格中的所有单元格都是常规格式 (G),当我在单元格中输入日期值 (1/1/2012) 时,格式会更改为日期 (D4),这很完美。但是当我将值改回某个文本值(例如:train)时,格式不会更改为常规格式(或文本格式),它仍然保持为日期格式 (D4)。

当单元格的值从日期更改为文本时,我是否应该启用 Excel 中的任何设置以将格式从日期更改为常规?

任何帮助都将受到高度赞赏。

答案1

不可以,你不能这么做。这是一次性的事情。

答案2

你考虑过这个吗反而

更改 NumberFormat进入每次将单元格设置为“常规”NumberFormat。

(无论如何,您都必须进入编辑模式才能将日期更改为文本,因此并没有太大区别)

而不是检查格式时离开细胞。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ActiveCell.NumberFormat = "General"
End Sub

当然,这可能会产生其他问题,例如您不想将其作为“常规”的其他单元格,但您可以通过测试轻松排除范围......

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveCell.Column <> 4 Then
      ActiveCell.NumberFormat = "General"
    End If
End Sub

当您在 ActiveCell 中输入日期时,Excel 仍会在您退出时将其转换为日期格式,但由于它是一种以序列号开头的“常规”格式,所以不会转换为日期,这似乎是您现在遇到的问题。

最大的缺点是选择现有日期会将其转换为“常规”,但如果您在退出之前忘记注意日期,则仍然可以在单元格中右键单击并将其格式化为日期。

如果你仍然想探索格式化单元格,你也可以尝试这个

将当前 ActiveCell 作为公共变量存储在模块中,以便当您离开它时可以使用它来检查它是否是日期格式

Cell 函数可能是测试日期格式最简单的方法

aCell = Application.Evaluate("=CELL(""format""," & previousCell & ")")
If Left(aCell, 1) <> "D" Then previouseCell.NumberFormat = "General"

答案3

您还可以使用此工作表函数:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not IsNumeric(Target.Value) And Not IsDate(Target.Value) Then
    Target.NumberFormat = "General"
  End If
End Sub

如果值是字符串,则将设置常规格式。

相关内容