天天看點

操作工作表

目錄

  • ​操作工作表​
  • ​​基礎​​
  • ​進階操作​
  • ​​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的後面,那我們思考一下,