第一章 入门篇1.13 offset语句,今天小编就来说说关于vba基础入门知识?下面更多详细答案一起来看看吧!

vba基础入门知识(学习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语句通常用法

我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!

,