第一章 入门篇1.13 offset语句,今天小编就来说说关于vba基础入门知识?下面更多详细答案一起来看看吧!
vba基础入门知识
第一章 入门篇
1.13 offset语句
1、功能
OFFSET语句是以一个单元格为基准,进行偏移,返回的是偏移后的单元格。
2、编写格式
单元格.offset(偏移几行,偏移几列)
偏移几行:上负,下正
偏移几列:左负,右正
例如:Range("d8").offset(0, -3),以"d8"单元格为基准单元格,偏移0行-3列,也就是向左偏移3列,偏移后的单元格是“a8”单元格。
3、小程序
把下表中的资产名称为"音响设备"的资产,以卡片号为名字,新增一个工作表。
卡片号 |
资产名称 |
建卡日期 |
原值 |
净值 |
00007933 |
空调 |
2007-12-31 |
498720.00 |
14961.60 |
00007934 |
台式电脑 |
2007-12-31 |
35670.00 |
1070.10 |
00012189 |
音响设备 |
2007-12-31 |
12420.00 |
372.60 |
00014439 |
照相机 |
2008-06-11 |
6800.00 |
204.00 |
00014439 |
音响设备 |
2008-06-11 |
6800.00 |
204.00 |
00014439 |
音响设备 |
2008-06-11 |
6800.00 |
204.00 |
00072375 |
监控设备 |
2013-12-28 |
16986.00 |
509.58 |
00072448 |
空调 |
2013-12-28 |
6405.00 |
192.15 |
Sub offset()
Dim s As Range
FOR EACH s In Range(Sheets(1).[b2], Sheets(1).Cells(Rows.Count, 2).End(xlUp))
If s.Value = "音响设备" Then
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = s.offset(0, -1)
End If
Next
End Sub
在这个程序里:
1、For Each s In Range(Sheets(1).[b2], Sheets(1).Cells(Rows.Count, 2).End(xlUp))
因为FOR EACH语句默认是在活动工作表的单元格里循环,新增一个工作表后,新增的工作表就变成了活动工作表。为避免代码执行错误,循环区间必须加上是在哪个表的单元格区间里循环。
2、Worksheets.Add(after:=Sheets(Sheets.Count)).Name = s.offset(0, -1)
该语句的意思是:新增一个工作表,它的名字是符合条件的单元格向左偏移一列的单元格的值,也就是卡片号。
after:=Sheets(Sheets.Count),新增的工作表排在已经存在的工作表的后面,默认是在最前面新增。Sheets.Count统计已经存在的工作表的个数。
往期精彩回顾:
学习VBA,报表做到飞 第一章 入门篇 1.12 FOR EACH语句
学习VBA,报表做到飞 第一章 入门篇 1.11 CurrentRegion语句
学习VBA,报表做到飞 第一章 入门篇 1.10 END语句通常用法
我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!
,