VBA ComboBox调用Match函数查询Z列混合内容报13类型不匹配错误
错误原因
- 你在调用
Match查询前用了VBA.CLng()强制将下拉框的值转换为长整型,但你的Z列是字母数字混合内容,当下拉框选中值包含字母时,强制转长整型的操作本身就会触发类型不匹配错误。 Application.Match如果在Z列没有找到匹配项时,会返回Error类型的返回值,直接赋值给Integer类型的变量i也会触发类型不匹配。
修复方案
用下方代码替换原有逻辑即可:
Private Sub ComboBox2_Change() If Me.ComboBox2.Value <> "" Then Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Inbound Issues") Dim i As Variant ' 去掉强制类型转换,直接用下拉框原始值匹配 i = Application.Match(Me.ComboBox2.Value, sh.Range("Z:Z"), 0) ' 先判断是否匹配成功,避免后续调用报错 If Not IsError(i) Then Me.TextBox1.Value = sh.Range("H" & i).Value Else ' 匹配不到时的提示,可按需删除 MsgBox "未找到匹配的记录" End If End If End Sub
可选排查校验点
如果修改后还是匹配不到预期内容,可按以下步骤处理:
检查下拉框取值和Z列单元格内容是否有前后空格、大小写差异,可以调用Trim()、UCase()等函数统一处理后再匹配,示例:i = Application.Match(Trim(UCase(Me.ComboBox2.Value)), Application.Trim(Application.UCase(sh.Range("Z:Z"))), 0)
内容的提问来源于stack exchange,提问作者Harry Othsm
相关产品推荐
相关产品推荐

