EP08. “Test a Selection 检验选取内容”
🔒 登录后可标记已读- 这篇结合好几个判断条件,检验使用者当前选中的单元格
- 判断条件是「落在指定范围内、非空、且是数字」的单一单元格
- 很适合用来做小游戏或表单的输入验证
- 前置知识是 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: