逐步遍历单元格的不连续范围(Microsoft Excel)
Stephe需要开发一个宏,该宏将在运行宏之前根据用户选择的单元格执行操作。她知道如果用户选择一个单元格范围,则如何执行此操作,但如果用户选择了一个不连续的单元格范围,她将不知道如何在选择中单步执行。
对于VBA,连续选择和非连续选择之间几乎没有什么区别。 Excel使您可以相同地访问它们。请考虑以下代码片段:
Dim c As Range For Each c In Selection ' do something here MsgBox c.Address & vbTab & c.Value Next c
在这种情况下,使用“ For …下一步”循环一次一次选定一个范围内的单元格。在循环内,c变量代表一个单独的单元格,可以在引用中使用,如图所示。
如果出于某种原因要访问选择区域中的每个连续区域,可以通过专门寻址Areas组来实现,如以下代码片段所示:
Dim a As Range Dim c As Range For Each a In Selection.Areas 'Now each a refers to a contiguous range 'Do something here with areas, if desired For Each c In a.Cells 'Now each c refers to a cell in the area 'Do something here MsgBox c.Address & vbTab & c.Value Next c Next a
您还应注意,如果您要访问的范围(连续或不连续)已在Excel中命名,则您也只能访问命名范围内的单元格。只需将这些示例中的每个示例中的“选择”一词替换为范围名称即可,方法如下:
Dim c As Range For Each c In Range("MyNamedRange") ' do something here MsgBox c.Address & vbTab & c.Value Next c
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(8703)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: