MICROSOFT

EP08. “Test a Selection 检验选取内容”

首页 Microsoft 工具 Excel · VBA · Range Object · EP08
约 3 分钟· #EP08#Excel#Range Object
🔒 登录后可标记已读
  • 这篇结合好几个判断条件,检验使用者当前选中的单元格
  • 判断条件是「落在指定范围内、非空、且是数字」的单一单元格
  • 很适合用来做小游戏或表单的输入验证
  • 前置知识是 EP07 的 Intersect、IsNumeric/IsEmpty 函数

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Dim rng As Range, cell As Range

Set rng = Range("C4:D10")
Set cell = Selection

If cell.Count = 1 And IsNumeric(cell) And Not IsEmpty(cell) And Not Intersect(rng, cell) Is Nothing Then
    MsgBox "You win"
Else
    MsgBox "You lose"
End If

逻辑说明

四个条件全部满足才算「赢」:

  • cell.Count = 1:只选中一个单元格(不是一整片范围)
  • IsNumeric(cell):内容是数字
  • Not IsEmpty(cell):不是空格
  • Not Intersect(rng, cell) Is Nothing:这一格确实落在 C4:D10 这个指定范围内(Intersect 有交集才不是 Nothing)

学完你会

  • ✅ 用 And 串联多个条件,判断选中的是不是符合要求的单一单元格
  • ✅ 用 IsNumeric / IsEmpty 检查单元格内容是不是数字、是不是空的
  • ✅ 用 Intersect 判断选中的单元格有没有落在指定范围内

常见错误

  • 判断条件漏了其中一项,比如没检查 cell.Count = 1,选中一整片范围时逻辑也会误判
  • Intersect 返回 Nothing 时忘记加 Not ... Is Nothing 判断,直接当成一般条件式使用会出错
  • 把好几个条件用 Or 串起来而不是 And,只要满足其中一个就通过,跟原本想要「同时成立」的需求不符

Sources

Blog / Website:

  1. Test a Selection