vba - 为什么我在这里收到类型不匹配错误?
问题描述
我创建一个新模块并插入以下代码:
Sub test()
Set wsData = ThisWorkbook.Worksheets("Data")
sCount = wsData.Columns(14).SpecialCells(xlCellTypeBlanks).Count
msgbox sCount
End Sub
在工作表“数据”中,我有以下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.CountLarge = 1 Then
If Not Intersect(Target, Range("K:M")) Is Nothing And Target.Value <> "" Then
'code
End if
End if
End Sub
当我运行test()
sub 时,我得到一个类型不匹配错误If Not Intersect(Target, Range("K:M")) Is Nothing
,作为目标错误类型。
为什么会这样?
为什么测试会触发变更事件?如果手动过滤我的数据表的第 14 列以仅留下空白单元格,我不会收到相同的错误!
解决方案
类型不匹配的问题在于Target.Cells
不止一个单元格。因此,Target.Value <> ""
throws 类型不匹配,因为无法将多个单元格与""
. 看MsgbBox
与单元格的数量:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.CountLarge = 1 Then
If Target.Cells.CountLarge > 1 Then MsgBox Target.Cells.CountLarge
If Not Intersect(Target, Range("K:M")) Is Nothing And Target.Value <> "" Then
'code
End If
End If
End Sub
根据业务逻辑,可能有几种解决方案。
If Target.Cells.CountLarge > 1 Then Exit Sub
最简单的一种是在_SelectionChange
事件中写入 。另一种方法是禁用周围的事件
sCount = wsData.Columns(14).SpecialCells(xlCellTypeBlanks).Count
像这样:
Sub TestMe()
Set wsData = ThisWorkbook.Worksheets("Data")
Application.EnableEvents = False
sCount = wsData.Columns(14).SpecialCells(xlCellTypeBlanks).Count
Application.EnableEvents = True
msgbox sCount
End Sub
推荐阅读
- powerbi - 每月单独计算的 YTD 度量
- javascript - react-native 导航返回时重新运行功能
- javascript - Conflict on JS files after combining Material Design Lite and Bootstrap 4
- r - 可以将前一行值按两个不同的列分组吗?
- python - django 模型 - 检查具有匹配属性的模型是否已存在于数据库中的实例方法
- java - Android:ZipFile() java.util.zip.ZipException:文件太短而不能成为 zip 文件:0
- javascript - Do implementations of the Web Audio API tend to make full use of available CPU cores?
- sql-server - How to refresh database to test from production with encrypted columns?
- dart - 如何完成一个未来?
- sql - 使用列中的现有值更新列中的空值