如果语句检查用户是否要删除单元格

时间:2019-08-14 08:01:22

标签: excel vba

我是vba的新手,在删除工作簿中的多个单元格时遇到Type mismatch错误,并且在此处的If语句中失败:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = "Multiple Choice - Multiple Answer" Then
        MsgBox "You selected MC-MA"
    End If
End Sub

我想知道是否有一种方法可以检查用户是否正在删除单元格的内容,并且在这种情况下不运行此if语句?

我尝试了If Trim(Target.Value) <> Empty,但是它引发了我猜错的错误,因为我试图对不存在的值运行If语句。

我希望If Trim(Target.Value) <> Empty使其跳过上面的代码,但会引发Type mismatch错误。

2 个答案:

答案 0 :(得分:1)

尝试像这样的SelectionChange事件:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range

    For Each cel In Target
    If cel.Value = "Multiple Choice - Multiple Answer" Then
        MsgBox "You selected MC-MA"
    End If
Next
End Sub
  • 即使在Change事件中,即使您尝试一一检查单元格,也不会发现具有该匹配项的单元格,因为 代码在执行删除操作后运行 。因此,到涉及If语句时,该单元格已经为空。

答案 1 :(得分:0)

我想出了办法。如果我只是执行一个检查if Target.Count = 1的If语句,然后运行代码即可!