EP04. “Vlookup in VBA VBA 里用 VLOOKUP”
🔒 登录后可标记已读- VBA 代码里也能直接调用 Excel 的工作表函数,这篇讲怎么用
WorksheetFunction.VLookup在代码里做查找 - 也讲查不到值时怎么用
On Error拦截错误、显示友善提示而不是让程序直接中断 - 前置知识:Excel 版 VLOOKUP 的基本用法(见 03_Functions/06_Lookup & Reference/EP01)
- 学完能自己在 VBA 里调用工作表函数,并处理查找失败的情况
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
基础用法
Range("H3").Value = WorksheetFunction.VLookup(Range("H2"), Range("B3:E9"), 4, False)
用 WorksheetFunction 属性存取 Excel 的 VLOOKUP 函数,把结果直接写进 H3。
加错误处理
On Error GoTo InvalidValue:
Range("H3").Value = WorksheetFunction.VLookup(Range("H2"), Range("B3:E9"), 4, False)
Exit Sub
InvalidValue: Range("H3").Value = "Not Found"
逻辑说明
- 如果 H2 填的查找值在 B3:E9 找不到,
WorksheetFunction.VLookup会直接抛出运行时错误,让宏中断 On Error GoTo InvalidValue:让程序遇到错误时,跳去执行InvalidValue:标签之后的代码,而不是直接中断Exit Sub放在正常流程的最后,确保没出错时不会「顺便」跑到下面的错误处理区块- 出错时执行
InvalidValue:底下的代码,把 H3 显示成 "Not Found" 这种友善提示,而不是一堆错误代码
学完你会
- ✅ 用
WorksheetFunction.VLookup在 VBA 代码里直接调用工作表函数 - ✅ 用
On Error GoTo 标签拦截运行时错误,避免宏直接中断 - ✅ 知道正常流程结尾要加
Exit Sub,避免误跑进错误处理区块
常见错误
- 没加错误处理,查找值不存在时整个宏直接中断报错,使用者体验很差
- 忘记在正常流程结尾加
Exit Sub,导致没出错时也会「跑」到错误处理区块,显示错误信息 On Error GoTo后面的标签名字打错,或者标签本身没有正确对应到程序里的位置
Sources
Blog / Website: