重点内容
适用版本
桌面版通用(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 可以像单一连续范围一样直接整体操作,其实很多情况要透过
Areas逐块处理 Areas(1)的编号从 1 开始,不是从 0,索引搞错会拿到错的区域或报错- 明明选取的是单一连续范围,却误用
Areas逻辑去拆分处理,多此一举
Sources
Blog / Website: