EP12. “Areas Collection Areas 集合”
🔒 登录后可标记已读- 一个 Range 对象可以由好几块不相邻的范围组成(比如逗号分隔的
Range("B2:C3,C5:E5")) - 每一块不相邻的范围就叫一个 Area
Areas集合能让你分别取用或统计每一块- 前置知识不需要,是 EP13 Compare Ranges 的基础
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
建立一个多区域范围
Dim rangeToUse As Range, singleArea As Range
Set rangeToUse = Range("B2:C3,C5:E5")
逗号分隔代表这个 Range 包含两块不相邻的区域。
统计总共有几个区域
MsgBox rangeToUse.Areas.Count
结果是 2。
取用第一个区域的单元格数
MsgBox rangeToUse.Areas(1).Count
结果是 4(B2:C3 这一块的单元格数)。
逐一走过每个区域
For Each singleArea In rangeToUse.Areas
MsgBox singleArea.Count
Next singleArea
依序弹出每一块区域各自的单元格数量。
方法怎么选
| 想做什么 | 写法 | 例子 |
|---|---|---|
| 知道总共有几块区域 | .Areas.Count | rangeToUse.Areas.Count |
| 取用指定的某一块区域 | .Areas(编号) | rangeToUse.Areas(1).Count |
| 逐一处理每一块区域 | For Each ... In .Areas | For Each singleArea In rangeToUse.Areas |
学完你会
- ✅ 分清一个 Range 对象可能是由好几块不相邻的 Area 组成
- ✅ 用 Areas.Count / Areas(编号) 统计或取用指定区域
- ✅ 用 For Each 搭配 Areas 逐一处理每一块区域
常见错误
- 以为多区域的 Range 可以像单一连续范围一样直接整体操作,其实很多情况要透过
Areas逐块处理 Areas(1)的编号从 1 开始,不是从 0,索引搞错会拿到错的区域或报错- 明明选取的是单一连续范围,却误用
Areas逻辑去拆分处理,多此一举
Sources
Blog / Website: