vba基礎入門知識?第一章 入門篇1.13 offset語句,今天小編就來說說關于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語句通常用法
我是雲飛揚,職場财會人員,願與大家分享表格制作和數據統計分析的技巧與方法,希望大家的工作更便捷,更輕松!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!