Worksheet_SelectionChange如果条件为false,则返回错误



我试图跳出一个Form如果选择在第4列只选择了一个单元格并且第3列中的下一个单元格为空

如果条件为真,则工作

但如果条件为假,则会出现错误:

运行时错误"13":类型不匹配,

在if行上

这就是代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 And Target.Cells.Count = 1 And Target.Offset(, -1).Value = 0 Then
C = Target.Offset(, -1).Address
UserForm1.Show
End If
End Sub

选择更改灾难

两到三个问题

您应该使用CountLarge而不是Count。如果选择的单元格过多,Count将导致Run-time error '6': Overflow。请选择工作表上的所有单元格(CTRL+A(进行尝试。

如果在A列中选择一个范围,则无法计算Target.Offset(, -1)将导致Run-time error '1004': Application-defined or object-defined error

如果选择了多个单元,则Target.Offset(,-1).Value将导致无法与0进行比较的阵列,这将导致Run-time error '13': Type mismatch

一个可能的解决方案

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const ColumnNumber As Long = 4
Const ColumnOffset As Long = -1
Const OffsetValue As Long = 0
Dim C As String
With Target
If .Column + ColumnOffset < 1 Or .Cells.CountLarge > 1 Then Exit Sub
If .Column = ColumnNumber And .Offset(, ColumnOffset) = OffsetValue Then
C = Target.Offset(, ColumnOffset).Address
UserForm1.Show
End If
End With
End Sub

最新更新