excel - Worksheet_SelectionChange 如果条件为假,则返回错误
问题描述
如果选择在第 4 列中并且只选择了 1 个单元格并且第 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
推荐阅读
- pandas - 如何更改 sns.distplot 中 x 轴和 y 轴的数据
- qt - Qml的DropArea什么不能用?
- popup - wx.DrawRectangle 上的 wxPython 弹出窗口/工具提示?
- sass - 如何修复 gulp watch 不看文件
- javascript - 如何解决这个 javascript switch 语句问题,switch 语句不起作用
- javascript - 在滚动和屏幕宽度上更改导航栏颜色
- docker - Heroku 上的“没有为进程类型 web 指定命令”
- java - doNothing.When 对于私有 void 方法本身正在调用方法
- r - 在 R 中使用 msSurv 包
- command-line-interface - 当 Spinnaker auth 为 SAML 时的 Spinnaker CLI