MICROSOFT

EP04. “Vlookup in VBA VBA 里用 VLOOKUP”

首页 Microsoft 工具 Excel · VBA · Application Object · EP04
约 4 分钟· #EP04#Excel#Application Object
🔒 登录后可标记已读
  • 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:

  1. Vlookup