gpt4 book ai didi

vba - 为什么我在这里收到类型不匹配错误?

转载 作者:行者123 更新时间:2023-12-04 21:14:37 24 4
gpt4 key购买 nike

我创建一个新模块并插入以下代码:

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()子,我在 If Not Intersect(Target, Range("K:M")) Is Nothing 上收到类型不匹配错误,作为目标错误类型。

为什么会这样?

为什么测试会触发变更事件?
如果手动过滤我的数据表的第 14 列以仅留下空白单元格,我不会收到相同的错误!

最佳答案

类型不匹配的问题是 Target.Cells不止一个细胞。因此,Target.Value <> ""抛出类型不匹配,因为无法将多个单元格与 "" 进行比较.见 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

    关于vba - 为什么我在这里收到类型不匹配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52608902/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com