我有一个宏,它会在更改后检查一个单元格,并将该单元格的输入格式化为可接受的格式。这样做是为了让用户能够以多种方式输入数据并使单元格正确输出,从而使用户更容易。
我有:
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
但似乎没有这样做。
感谢您的帮助!
答案 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