首页 > 解决方案 > 捕获类型 13 不匹配

问题描述

每次用户退出 Excel 单元格时,都会触发以下代码。然后它检查与正则表达式匹配的单元格值。这行得通。

如果用户选择了一系列单元格并可能删除了内容 - 我会收到 VBA 错误类型 13 不匹配。如何进行测试以使用户不会收到错误。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range)
Dim strPattern As String: strPattern = "^[a-z]{2,4}[0-9]{2,4}$"
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range

Set Myrange = ActiveSheet.Range("A1")

If target.Value <> "" Then
    strInput = LCase(target.Value)
    With regEx

此行引发类型 13 错误:

    If target.Value <> "" Then

在继续之前,它需要检查 target.value 是一个单元格而不是一个范围。

标签: excelvba

解决方案


.Value单元格范围的 是 2D Variant 数组,因此无法与"".

一种解决方法是添加

If Target.CountLarge > 1 Then Exit Sub

推荐阅读