Microsoft Excel检测用户清除单元格

时间:2014-03-31 14:09:37

标签: excel vba

我有一个宏,它会在更改后检查一个单元格,并将该单元格的输入格式化为可接受的格式。这样做是为了让用户能够以多种方式输入数据并使单元格正确输出,从而使用户更容易。

我有:

Private Sub Worksheet_Change(ByVal Target As Range)
    Set rCells = Range("C3:C4, G9:G24, C60:C61, G66:G81")
    Application.EnableEvents = False
    If Not Application.Intersect(rCells, Range(Target.Address)) Is Nothing Then
            Format(Range(Target.Address))
    End If
    Application.EnableEvents = True
End Sub

...捕获更改,然后将输入格式化为正确的格式。

我希望用户能够将单元格留空。

我可以添加哪些内容以允许用户使用DEL或BACKSPACE清除单元格而不触发格式()?

我试过了:

If IsEmpty(Target) Then Exit Sub

但似乎没有这样做。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用此行检查Target范围内的所有单元格是否为空:

If WorksheetFunction.CountBlank(Target) = Target.Cells.Count Then Exit Sub

正如我在评论中提到的那样

  • Format(Range(Target.Address))更改为Format(Target)
  • 不要忘记将实际代码中的函数名Format更改为My_Format,因为有这个名称的内置函数:)

答案 1 :(得分:0)

测试 =“”

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = "" Then Exit Sub
    Set rCells = Range("C3:C4, G9:G24, C60:C61, G66:G81")
    Application.EnableEvents = False
    If Not Intersect(rCells, Target) Is Nothing Then
            Format (Target)
    End If
    Application.EnableEvents = True
End Sub