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培训的来源。

本技巧(8701)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: