MICROSOFT

EP12. “Areas Collection Areas 集合”

首页 Microsoft 工具 Excel · VBA · Range Object · EP12
约 3 分钟· #EP12#Excel#Range Object
🔒 登录后可标记已读
  • 一个 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.CountrangeToUse.Areas.Count
取用指定的某一块区域.Areas(编号)rangeToUse.Areas(1).Count
逐一处理每一块区域For Each ... In .AreasFor Each singleArea In rangeToUse.Areas

学完你会

  • ✅ 分清一个 Range 对象可能是由好几块不相邻的 Area 组成
  • ✅ 用 Areas.Count / Areas(编号) 统计或取用指定区域
  • ✅ 用 For Each 搭配 Areas 逐一处理每一块区域

常见错误

  • 以为多区域的 Range 可以像单一连续范围一样直接整体操作,其实很多情况要透过 Areas 逐块处理
  • Areas(1) 的编号从 1 开始,不是从 0,索引搞错会拿到错的区域或报错
  • 明明选取的是单一连续范围,却误用 Areas 逻辑去拆分处理,多此一举

Sources

Blog / Website:

  1. Areas Collection