龙空技术网

VBA中范围表达式的应用

VBA语言専攻 578

前言:

现在你们对“sub c语言”可能比较着重,兄弟们都需要学习一些“sub c语言”的相关知识。那么小编也在网摘上收集了一些对于“sub c语言””的相关资讯,希望咱们能喜欢,兄弟们快快来学习一下吧!

【分享成果,随喜正能量】一个人年轻时候的容量比什么都重要,这决定了一个人生命的宽度,决定了你将来能够建立的格局。"灼灼其华,绚烂之极归于平淡",说的其实就是现在你的涉猎越广,就越能给你的未来无限可能性。居安思危,时刻考虑自己工作的可替代性!

《VBA经典应用69例》,是我推出第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容是教程的应用1:VBA中范围表达式的应用。

应用1 利用VBA中范围表达式表示工作表中的范围

在这个专题中,我将和大家一起从VBA的角度认识在Excel中选择范围的几个基本要素,然后,我将解决选择可变范围的方法。

1 在Excel中选择单元格

在Microsoft Excel中选择一个单元格或一系列单元格来执行操作是最常见的情况之一,例如,为了复制和粘贴内容,我们需要执行下面的一系列步骤:

① 选择要复制的单元格

② 单击复制或者ctrl+c

③ 选择需要粘贴内容的单元格

④ 点击粘贴或者ctrl+v

在此过程中,我们可以选择连续行和列中的一个单元格或多个单元格。此连续选择称为范围"Range"。"Range"是一个非常重要的概念,通常通过左侧上角的开始单元的引用和右下角的末尾单元的引用来识别。例如,下图中Range为从 C2到E7,选择了此范围中的所有单元格。

2 Range Expression(范围的表达式)

VBA应用中提供了可用于选择单元格范围的两种表达式.

语法:

① Range(“<reference starting cell>:<reference ending cell>”)

② Range(Cells(<row_number>,<col_number>),Cells(<row_number>,<col_number>))

有了上面的语法表达式,我们可以把上图中的选择用下面的表达式来表达,我们假设这个范围是在名为"Sheet1"工作表上的选择:

第一种表达方式:Sheets("Sheet1").Range("C2:E7").Select

请注意上面的"C2:E7",字母用于表示列号,行由数字表示。在两个单元格引用之间有一个冒号,整个参数被包裹在双引号中。

第二种表达方式:Sheets("Sheet1").Range(Cells(2, 3), Cells(7, 5)).Select

在这种情况下,不用双引号表示范围。这种表示使用行和列号表示单元格来表达引用,中间用的是逗号。

3 范围表达式中的可变变量

我们可以利用上面的两种方案来选择一系列单元格,这种范围的表达式中形成该范围的起始和终止两个单元格是确切的地址。现在,我们来研究一下如何在同一表达式中插入动态或不确定的行或列编号。

在范围表达式中完成可变行数的设置是使用双引号和符号“&”的连结。下面我将通过几个例子给大家说明:

实例一:将一系列单元格着色到动态变化的最后一行

在下面的示例中,我们先查找最后使用的行,并在范围表达式中动态使用该行。此示例将选定的单元格涂上绿色。

下面先看我给出的代码:

Sub mynzB() '动态单元格范围的选择,并着色

Dim lastRow As Integer

'初始化变量

lastRow = ActiveSheet.UsedRange.Rows.Count

'使用范围表达式中的变量来选择

Sheets("Sheet1").Range("A2:C" & lastRow).Select

'将选定的单元格涂成绿色

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.Color = 5296274 '绿色

End With

End Sub

代码截图:

代码解读:以上代码利用变量lastRow 来获得一个行数,这个行数是通过当前活动工作表中UsedRange.Rows属性来获得,这个数量就是我们期望得到的。然后利用"A2:C" & lastRow来获得这个单元格的区域。

代码的运行效果:

实例二:将特定颜色应用到选定单元格的范围

下面的例子是另一种使用单元格范围表达式执行操作的示例。在这里,我们将更改所选单元格的字体颜色。

下面看我给出代码:

Sub mynzC() '将特定颜色应用到选定单元格的范围

Dim row_num As Integer

'利用InputBox初始化变量

row_num = InputBox("Enter the row number")

'使用range表达式中的变量仅选择选择前行的数据,而不选择头部

Sheets("Sheet1").Range(Cells(2, 1), Cells(row_num, 3)).Select

'将选定单元格的字体涂成红色

With Selection.Font

'返回或设置应用的颜色,红色

.ColorIndex = 3

End With

End Sub

代码截图:

代码的解读:上面的代码利用row_num变量来设置单元格的范围,然后利用范围表达式的第二种方案来获得此范围的选择,并改变字体的颜色。

下面看输出的结果:

实例三:将单元格范围字体加粗

下面的例子是使用单元格范围表达式执行操作的示例。在这里,我们将所选单元格的字体加粗。

下面看我给出代码:

Sub mynzD() '将单元格范围字体加粗

Dim row_num As Integer

row_num = InputBox("Enter the row number")

'使用范围表达式中的变量仅选择从用户输入的行数开始的前3行数据

Sheets("Sheet1").Range(Cells(row_num, 1), Cells((row_num + 3), 3)).Select

'字体加粗 "Bold"

Selection.Font.Bold = True

End Sub

代码截图:

代码解读:上面的代码利用Range(Cells(row_num, 1), Cells((row_num + 3), 3))设置单元格的范围为选定的行号开始直到下面的三行。

代码的执行效果:

结论: VBA中范围表达式对于Excel中的计算和格式化单元格非常有用。不仅对于固定行号,还可以动态插入列号,以便充分利用表达式。换句话说,我们可以使用一个在表达中保留数字的变量,而不是直接硬编码引用。

今日内容回向:

1 范围表达式有哪两种方式?

2 范围表达式中对于动态边界如何设置?

本讲内容参考程序文件:应用001.xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

标签: #sub c语言