1. <source id="qxlq8"><menuitem id="qxlq8"><button id="qxlq8"></button></menuitem></source>
      <rt id="qxlq8"><optgroup id="qxlq8"><acronym id="qxlq8"></acronym></optgroup></rt>
      <cite id="qxlq8"><noscript id="qxlq8"></noscript></cite>

    2. 如何一鍵生成帶超鏈接的工作表目錄?

      在VBA系列教程第2卷,用了17章的篇幅給大家集中介紹了如何使用VBA進行數據分析和處理,內容涵蓋了單元格常用操作、數組遍歷讀寫數據、字典聚合與查詢數據等。這章開始給大家介紹工作表對象的常用操作,比如新建、刪除、重命名、排序、解密、匯總和拆分等。


      1 丨

      什么是工作表



      先來給大家簡單介紹一下工作表。這貨是單元格的爸爸、工作簿的兒子。眾所周知,工作表的單元格多的數不過來,所以這家伙兒女眾多,兄弟也不少,是個生活十分艱難的中年老男人……


      在VBA基礎篇「什么是對象」里咱們講過,一個工作表是單個對象,用Worksheet表示,一組工作表就是工作表對象的集合,用復數Worksheets表示。因此,如果我們要聲明一個工作表變量,可以使用語句▼



      Dim sht As Worksheet


      但不能使用語句



      Dim sht As Worksheets


      畢竟一個和一群是兩個截然不同的概念,就好比單挑和群毆的區別。


      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第1張


      ……


      工作簿不允許它的兒子們有重名,所以每一張工作表都有自己獨一無二的標簽名,比如,選中工作表名稱為"看見星光"的工作表。


      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第2張


      示例代碼如下▼





      Sub SelectSht()    Worksheets("看見星光").SelectEnd Sub


      工作表對象是一個集合,因此除了標簽名以外,每張工作表也都有自己的索引號,比如"看見星光"坐在前排數第2個位置上,因此也可以使用以下代碼選中他。






      Sub SelectShtByIndex()    Worksheets(2).Select    MsgBox Worksheets(2).NameEnd Sub


      但需要注意的是,索引的位置并非固定不變,比如我們將"看見星光"升值不加薪調到第1個位置上。


      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第3張


      此時Worksheets(2)就變成了"目錄表",而不是原來指向的"看見星光"。


      ……


      除了這兩種方式外,每張工作表還擁有獨一無二的代碼名稱;代碼名稱由系統按序號默認生成的,可以在VBE編輯器工作表對象的屬性中進行修改。


      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第4張


      如上圖所示,工作表的標簽名稱是"看見星光",代碼名稱是"Sheet1"。使用代碼名稱也可以引用工作表,而且不論該工作表的標簽名修改為"看見月光"還是"看見陽光",代碼名稱都不會發生改變。

      示例代碼如下▼







      Sub SelectShtByCodeName()    Sheet1.Select    MsgBox Sheet1.Name '返回工作表標簽名    MsgBox Worksheets("看見星光").CodeName '返回工作表代碼名稱End Sub


      ……

      既然三種方式都能表達引用工作表,那么各有什么優劣之處呢?

      打個響指,做個總結如下。

      索引法是根據工作表位置確定的,常用于表格排序。代碼名稱法不會因工作表名稱的改變而改變,看起來好像是個很可靠的同志,但如果工作表刪除后又新建,系統自建的代碼名稱也可能會紊亂,所以他只是看起來比較可靠罷了,實際應用也很少——不過它有一個很大的優點,輸入工作表代碼名稱后再輸入點號,系統會自動顯示對象的方法和屬性。作為VBA初學者,可以先使用代碼名稱編寫代碼,再將工作表的引用修改為標簽名稱。

      最常使用的還是工作表標簽引用法,通過工作表標簽名稱引用相關工作表;但這個方法也有個問題,工作表的標簽名很有可能會被用戶更改,比如"看見星光"被更改為了"看見月光",此時再使用Worksheets("看見星光")會被提示"下標越界",意思就是當前工作簿的工作表集合中查無此表。

      因此在使用標簽法引用工作表前,往往需要判斷當前工作簿中是否存在相關工作表……▼



      2 丨

      工作表遍歷



      判斷工作簿中是否存在指定名稱的工作表,有兩種常用方式,一種是試錯法,一種是遍歷法。

      試錯法示例代碼如下▼

      代碼看不全可以左右拖動..▼











      Sub HaveSheet()    Dim sht As Worksheet    On Error Resume Next '忽略程序錯誤,使之繼續運行    Set sht = Worksheets("看見星光") '將指定工作表賦值變量sht    If Err.Number Then '如果不存在指定工作表,程序出現錯誤,err.number會返回非0數值        MsgBox "工作簿中不存在名為看見星光的工作表。"        Exit Sub '退出程序    Else        sht.Select    End IfEnd Sub

      代碼解析:


      第3行代碼的作用是忽略代碼運行中產生的錯誤,使程序繼續運行。


      第4行代碼將指定工作表賦值變量sht。如果當前工作簿不存在指定工作表,這句代碼會返回錯誤"下標越界",但由于第3行代碼的作用,程序不會彈窗警告錯誤信息,而是繼續運行。


      第5行代碼判斷錯誤號。如果當前代碼運行未出現錯誤,錯誤號會返回0,否則返回非0數值。在邏輯判斷中,非0的數值為True,0為False。以此即可判斷當前工作簿中是否存在指定工作表。


      ……


      遍歷法示例代碼如下▼

















      Sub HaveSheetByTra()    Dim sht As Worksheet, bln As Boolean    bln = False '邏輯值初始化    For Each sht In Worksheets '遍歷工作表        If sht.Name = "看見星光" Then            bln = True '布爾標記改為true            Exit For '退出循環        End If    Next    If bln Then '如果存在指定工作表        sht.Select    Else        MsgBox "工作簿中不存在名為看見星光的工作表。"    End IfEnd Sub


      代碼解析:

      Worksheets是一個集合,因此第4至第9行代碼使用For each語句遍歷每一個工作表的名字,如果有指定工作表的名字,則將布爾標記bln修改為True。第10至第14行代碼根據布爾變量bln,返回相應的結果。

      ……


      3 丨

      生成工作表目錄



      本小節給大家分享一個常用的案例,為工作簿一鍵生成帶超鏈接的工作表目錄。

      示例代碼如下▼

      代碼看不全可以左右拖動..▼














      Sub BuildSheetList()    Dim sht As Worksheet, i As Long, strName As String    With Columns(1)        .Clear '清空A列數據        .NumberFormat = "@" '設置文本格式    End With    Range("a1") = "目錄"    For i = 1 To Sheets.Count '索引法遍歷工作表集合        strName = Sheets(i).Name '表名        Cells(i + 1, 1).Value = strName        ActiveSheet.Hyperlinks.Add anchor:=Cells(i + 1, 1), Address:="", _                SubAddress:="'" & strName & "'!a1", TextToDisplay:=strName    NextEnd Sub

      代碼解析▼

      第8至第13行代碼采用索引法遍歷當前工作簿表的集合。Sheets.Count語句返回當前工作簿工作表的數量。

      第11行代碼利用工作表的Hyperlinks屬性創建超鏈接,語法格式如下▼

      expression.Add (Anchor, Address, SubAddress, ScreenTip, TextToDisplay)


      各參數說明如下圖所示。

      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第5張



      4 丨

      Worksheets和Sheets的區別



      如果你是像星光一樣細心的朋友,可能會發現上述一系列代碼,對工作表的表述,我們有時候使用了Worksheets,有時候又使用了Sheets,那么兩者有什么去區別呢?

      如何一鍵生成帶超鏈接的工作表目錄? Excel教程 第6張

      如上圖所示,從理論上來說,工作簿并非只有普通的工作表,還有圖表、宏表等形式的工作表;Worksheets只是普通的工作表,sheets不但包含了普通工作表,也包含了其它類型的工作表。
      不過如果從實際出發……,圖表、宏表等形式的工作表都是歷史遺留的產物了,極其稀罕,因此絕大部分時候Wroksheets和sheets是相等的……看我銳利迷人的小眼睛,但是嚴謹期間,咱們還是建議使用Worksheets。
      本站均來自網絡,如有侵權,請聯系站長刪除!
      海印素材 » 如何一鍵生成帶超鏈接的工作表目錄?

      發表評論

      歡迎 訪客 發表評論

      浓毛老太交欧美老妇热爱乱_色五月播五月丁香综合_校花自慰全过程冒白浆好爽_孽徒我不能再生了免费_性欧美13处14处破在线观看_裕树先生那个不可以吃哦免费全集