目錄
- 操作工作表
- 基礎
- 進階操作
- add
- shetts與for連用
- sheets表與range連用
- range與count連用
- 屬性與方法
- 中階操作
- name
- 案例
- 進階操作
- delete
- 建立100張,然後再删除掉;
- copy 表
操作工作表
基礎
我們可以對表做哪裡操作?無非是增删改查,也就是方法
- select
- add
- delete
- copy
有哪些資訊可以擷取?也就是屬性;
- 表的名字,也就name
- 表的數量,也就是count
關于表的名字?
我們知道我們可以對表進行重命名,那我們命名的那個名字算是表的名字嗎?可以算是,這個表可以叫某個名字,那個表也可以叫這個名字,并不唯一;但表還有一個其它的名字,那就是一個絕對的名字,這個絕對的名字在VBA當中可以看到,比如第一張表,往往他的絕對名字就叫做sheet1;類似于名字與身份證好的差別;
選擇某張表,通過絕對名字,如下所示:
sub shishi()
sheet1.select
end sub
選擇某張表,通過最直覺的名字,假如sheet1那張表的名字叫1月的話,如下所示:
Sub shishi2()
Sheets("1月").Select
End Sub
上面這兩種方式,第一種是強引用,第二種是弱引用,其實還有第三種,第三種比較有意思,不管你的名字是什麼,就按照常數量進行排序,1就是排在前面的第1張表,2就是排在前面的第2張表,依次類推;
Sub shishi3()
Sheets(1).Select
End Sub
為什麼會這有這麼多表示某張表的辦法?其實是應用于不同的場景,我們來用單元格來舉例子,比如a1單元格,我們可以通過[a1]來表示,也可以通過range("a1")來表示,後者看起來麻煩,但後者支援變量,而前者不支援;
進階操作
add
在目前表的前面添加一張表
sub shishi()
sheets.add
end sub
在第三表張的後面插入6張,指定位置,還可以通過before
sub shishi6()
sheets.add after:=sheet3,count:=6
end sub
shetts與for連用
我們可以插一張,然後通過循環執行100次,如下所示。
sub shishi()
for i = 1 to 100
sheets.add
next
end sub
sheets表與range連用
我們使用range的時候,預設操作都是目前這張表,那我們通過sheets與range連用時,就可以突破這個限制,可以指哪打哪了,如下所示,直接指名表3的a1接口。
sub shishi9()
sheet3.range(a1)=100
end sub
range與count連用
count一看就是用來計數的,就是算一個目前有幾張表;
Sub shishi()
Range("a1") = Sheets.Count
End Sub
count的作用;
比如我們想要寫一個腳本,永遠在目前表的最後面插入表,這樣的話通過before或after直接寫死就無法實作,我們可以在after後面跟一個變量,而這個變量就是目前表的總和;
sheets.add after:=sheets(sheets.count)
屬性與方法
屬性使用的時候都是帶一個等号,如上面的例子所示;方法往往是一個動作,比如count;
中階操作
name
改表名
将第一張表的名字改成8月。
sheet1.name = "8月"
案例
第一個新的工作簿當中,建立第二張表叫二月,建立第三張表是三月,建立第四張表叫四月,就這樣連續建立10張表;
思路,這個題目當中肯定要使用for循環,還要使用add和count來實作每次都在最後一張表後面建立一張表,還要使用到name進行改名;
for i = 2 to 10
sheets.add after:= sheets(sheets.count)
sheet(sheets.count).name = i & "月"
next
進階操作
delete
上山容易下山難,add簡單,而delete要難一點;
關閉警告,一般是固定的的格式,當我們删除一張表的時候一般都是會先關閉告警,否則,每次都會彈出一個框,問我們是否要删除,當我們做完操作之後,又要把這個報警給打開,否則後續操作也會有問題;
Sub shishi()
'關閉報警
Excel.Application.DisplayAlerts = False
'删除sheet3
Sheet3.Delete
'打開報警
Excel.Application.DisplayAlerts = True
End Sub
建立100張,然後再删除掉;
這個問題思路分成兩步,第一步是建立100張表,第二步才是删除;
對于建立100張表,我們又有多種思路,我們可以通過add+count+after直接建立100張表,我們也可以通過for+add将建立1張表循環100次;
我們主要看一下删除如何删除呢?我們也可以通過delete+for循環,永遠删除第1張表,删除的次數是表的總數;
Sub xinjian()
Dim i As Integer
For i = 1 To 100
Sheets.Add
Next
End Sub
Sub shishi2()
'删除100張表,但目前總數是101張,最後一張是無法删除的;
Excel.Application.DisplayAlerts = False
Dim i As Integer
For i = 1 To 100
Sheets(1).Delete
Next
Excel.Application.DisplayAlerts = True
End Sub
在上面我們建立和删除都是用的for,但實際上建立不用for也是可以的,比如下面我們換一個方法;
Sub xinjian2()
Sheets.Add Count:=10
End Sub
copy 表
在使用copy的時候要注意,如果直接寫sheet1.copy會建立一個工作薄,為什麼會這樣呢?因為sheet1.copy的話并沒有指定複制到什麼地方去,預設的情況是建立一個工作簿,将表複制到建立的那個工作簿當中,比如:
sub shishi()
sheet1.copy after:=sheet3
endsub
上述這個案例就是複制sheet1到sheet3的後面,那我們思考一下,