解决下拉选择后拖拽填充单元格时VBA出现ERROR 13类型不匹配问题
解决ERROR 13: Type Mismatch错误的方案
错误原因
拖拽填充时,Target是多单元格区域,你代码里直接调用Target.Value会返回数组(而非单个单元格的值),和空字符串比较、或者作为VLookup的查找值时,就会触发类型不匹配错误。
修改后的代码
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim selectedVal As Variant Dim selectedNum As Variant ' 关闭事件触发,防止修改单元格时反复触发Worksheet_Change Application.EnableEvents = False ' 遍历Target中的每个单元格(处理多单元格拖拽填充的情况) For Each cell In Target selectedVal = cell.Value ' 跳过空单元格 If selectedVal = "" Then GoTo NextCell selectedNum = Application.VLookup(selectedVal, Worksheets("Bestuurders").Range("Omschrijving"), 2, False) ' 找到匹配项则替换为缩写 If Not IsError(selectedNum) Then cell.Value = selectedNum End If NextCell: Next cell ' 恢复事件触发 Application.EnableEvents = True End Sub
关键改动说明
- 新增
For Each cell In Target循环,逐个处理拖拽填充涉及的每个单元格 - 加入
Application.EnableEvents = False/True,避免修改单元格时反复触发事件导致的异常 - 用
GoTo NextCell跳过空单元格,逻辑更清晰
内容的提问来源于stack exchange,提问作者JB-acc
相关产品推荐
相关产品推荐

