工作表事件引发一个异常,称为类型不匹配错误

时间:2018-07-25 10:14:21

标签: vba

每当我运行此命令时,它就会向我显示类型不匹配错误(在If Target.Value = "CustomChoice"中)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "CustomChoice" Then
Range("P12").Value = "Enter Dates"
Range("P13").Interior.Color = vbGreen
Range("R13").Interior.Color = vbGreen
Else
Range("P12:R13").Clear
Range("Q10").Select
End If
End Sub

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为此事件在Range("P12:R13").Clear行中再次触发。但是,当此行激活时,Target.Address=P12:R13。如果范围超过1个单元格,则.value属性将无法像您一样使用。

因此,您需要修改代码以在执行过程中更改工作表时避免再次触发此事件。试试这个:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False 'deactivate events

If Target.Value = "CustomChoice" Then
    Range("P12").Value = "Enter Dates"
    Range("P13").Interior.Color = vbGreen
    Range("R13").Interior.Color = vbGreen
Else
    Range("P12:R13").Clear
    Range("Q10").Select
End If

Application.EnableEvents = True 'activate events

End Sub