《VBA之Excel应用》(版权©️10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是:VBA之Excel应用第四章第八节:单元格区域的Offset属性
【分享成果,随喜正能量】285人到中年,最大的无奈,就是家境撑不起梦想,能力配不上野心。感情抵不过命运,回报对不起辛苦。时间都在催我挣钱,年龄却在催我老去,在这个不知所措的年纪,我们做什么都是身不由己。时间让我们长大了年龄,却没有让我成为一个合格的大人。
第四章 单元格(Range)对象大家好,我们这章开始学习单元格对象。单元格(Range)对象是Excel VBA中最重要的对象之一。本章概述了Range对象的属性和方法,包括如何声明一个单元格对象,如何选择单元格对象,以及对行、列的操作,还讲解了如何对单元格进行复制、粘贴、清除、计数,以及对当前区域CurrentRegion的讲解,还涉及到单元格的联合与交叉等。通过这章的学习,大家会更清楚地看到VBA的结构,以及在实际工作中VBA的综合利用。
第八节 单元格区域的Offset属性大家好,我们继续单元格的学习,这讲我们讲解的内容是单元格的Offset属性,对于这个属性和之前讲解的Resize属性有一定的类似之处,但有着本质的不同,大家可以两者对比学习。
1 Range.Offset属性这个属性返回一个 Range对象,它表示指定区域以外的一个区域。
语法: expression.Offset (RowOffset, ColumnOffset)
其中expression 为一个表示 Range 对象的变量。
参数
① RowOffset 可选 Variant数据 区域偏移的行数—正值、负值或零(0)—正值表示向下偏移,负值表示向上偏移。 默认值为 0。
② ColumnOffset可选Variant数据 区域偏移的列数—正值、负值或零(0)—正值表示向右偏移,负值表示向左偏移。 默认值为 0。
2 Range.Offset属性的示例1)示例1:此示例激活 Sheet1 上活动单元格右移三列且下移三行的单元格。
Worksheets("Sheet1").Activate
ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
2)示例2:假定 Sheet1 包含具有标题行的表。此示例选择该表,但不选择标题行。在运行此示例之前,活动单元格必须位于表内。
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select
3)选择单元格 D1的代码
Range("A1").Offset(, 3).Select
4)选择单元格 A5的代码
Range("A1").Offset(4).Select
- 如果 RowOffset 或 ColumnOffset 为 0(零),则可将其忽略。
从上面的讲解中,我们看到Excel VBA中的Offset属性可以将特定数量的行和列从特定的范围移开。
我们看一个实际的应用实例:在工作薄的“Sheet8”工作表中,先选择一个单元格范围"A1:C2",并用一个变量来表示这个变量;然后将这个范围移动,移动的方向是这个范围向下移动3行,向右2列。
下面先看代码:
Sub mynzO() 'Range.Offset语句的应用实例
Dim myRange As Range
Sheets("SHEET8").Select
Set myRange = Range("A1:C2")
myRange.Select
myRange.Offset(3, 2).Select
End Sub
代码截图:
代码的讲解:
1)Sheets("SHEET8").Select
以上代码选择"SHEET8"工作表
2) Set myRange = Range("A1:C2")
以上代码将单元格区域赋给变量myRange,讲对象变量赋给变量的时候要用SET。
3) myRange.Select
以上代码将选择单元格区域。
4)myRange.Offset(3, 2).Select
以上代码将单元格的区域进行移动,移动的方向是这个范围向下移动3行,向右2列。
下面看代码的运行结果:
1)为了更好地显示代码的运行,我们在图中所示的位置点上断点,表示代码执行到这里将停止执行:
2)点击运行:
3)这个时候代码会运行到断点行,这行代码也会显示黄色。这个时候我们看工作表的界面:
4)我们在VBE窗口去掉代码的断点,点击VBE窗口的运行按钮:
5)回到工作表界面,这个时候,单元格区域放生了移动。
- Offset属性始终以范围的左上角单元格为起点。
今日内容回向:
1) 单元格的Offset属性意义是什么,有什么作用?
2) 单元格的Offset属性对单元格移动时以哪个位置为定位?
3) 如何调试代码,增加断点?
本讲内容参考程序文件:工作簿04.xlsm
我20多年的VBA成果全在下面的资料中: