乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      劃重點!告訴你什么是Excel VBA對象模型及如何引用對象

       hercules028 2022-01-14

      excelperfect

      標簽:VBA,對象模型

      要編寫Excel VBA程序,必須知道對象??梢哉J為,VBA基于面向對象編程,這意味著VBA程序主要是在處理(或操控)對象。因此,我們要掌握ExcelVBA編程,必須理解:

      1.什么是對象

      2.如何操控VBA對象

      3.Excel VBA對象模型

      剛開始接觸對象和對象模型的朋友,可能會被一些概念搞糊涂,這是正常的,隨著不斷地學習和使用,你的理解會越來越深入,這些概念也會逐漸清晰起來。

      基本說來,Excel VBA對象模型是編程時可以使用的對象的層次結構,它使得引用要操控的對象更容易。

      Image

      對象層次結構如下:

      層級1:在最頂端,只有一個對象。

      層級2:層次結構頂部的對象包含的一些對象。

      層級3:層級2中的對象可能包含的一些對象。

      層級4:層級3中的對象可能包含的一些對象。

      對象可能包含其他對象。該過程會重復,直到到達不包含任何其他對象的對象。

      通常,層次結構頂部的對象是Application對象,即層級1的對象是應用程序本身。對于Excel來說,Application對象就是Excel本身

      Application對象包含其他VBA對象。ExcelApplication對象包含的一些主要對象為:

      • AddIns,包含所有的加載項對象。
      • Windows,包含應用程序所有Window對象。
      • Workbooks,包含所有Workbook對象。
       
      這些VBA對象中的每一個又包含其他對象。例如,Workbook對象中包含的一些VBA對象如下:
      • Charts,包含Chart對象。
      • Names,包含Name對象
      • VBProjects,代表打開的項目。
      • Windows,包含指定Excel工作簿中的Window對象。
      • Worksheets,包含Worksheet對象。
       
      同樣,這些VBA對象包含其他對象。例如Worksheet對象包含下列VBA對象:
      • ChartObjects,包含ChartObject對象。

      • Comment,代表單元格批注。

      • Hyperlink,代表超鏈接。

      • Name,代表為特定單元格區(qū)域定義的名稱。

      • PageSetup,用于存儲打印信息。

      • PivotTables,包含PivotTable對象。

      • Range,代表單元格、行、列、所選擇的單元格,或三維單元格區(qū)域。








       
      如果以圖形描述,上述Excel VBA對象層次結構大致如下所示:

      Image

       
      注:上圖僅僅是Excel VBA對象模型層次結構的很小一部分。但不要著急,在編程時,我們通常只使用其中一些常用的對象,即便需要使用一些不常見對象,也能很快在Excel對象模型參考中找到,或者通過宏錄制器錄制宏來找到想要用的對象。
       
      下面,我們來看看Excel VBA對象模型層次結構背后的邏輯。
       
      對象集合
      集合有兩個顯著特征:它們本身就是對象;它們的主要目的是對同一類的VBA對象進行組合和管理。
       
      因此,集合是用于組合和管理其他對象的對象。
       
      在某些情況下,集合非常有用。例如,假設想對一組特定的對象執(zhí)行某些操作,如果所有這些對象都是同一集合的一部分,則可以構造VBA代碼以遍歷集合的每個成員并執(zhí)行所需的操作。可以想得到,這種結構比單獨列出每個集合成員更簡單。
       
      所以,集合允許同時處理一組完整的VBA對象,而不是處理每個單個的對象。
       
      以下是常見集合的示例:
      • Workbooks,當前打開的所有Excel工作簿的集合。
      • Worksheets,特定工作簿中所有Excel工作表的集合。
      • Charts,特定工作簿內所有圖表工作表。
      • Sheets,特定工作簿中所有工作表的集合,此時與工作表類型無關,包含常規(guī)工作表和圖表工作表。
       
      引用對象
      在編寫VBA代碼時,了解如何引用對象是至關重要的。很明顯,想要開始處理特定的VBA對象時,必須先識別它,也就是說,告訴VBA要處理哪個對象。
       
      如果遍歷Excel VBA對象模型的整個層次結構來引用對象,則稱為完全限定引用。
       
      我們已經知道,Excel對象模型層次結構的頂部是Application對象,因此引用這個對象很簡單,只需輸入:
      Application
       
      從這里開始,需要使用點(.)運算符開始沿著層次結構移動,即使用點(.)將每個VBA對象連接到上一個對象(對象的父對象)。這些點(.)用于自上而下連接并引用ExcelVBA對象模型的成員。
       
      例如,假設要引用Range對象,參考上圖所示的對象模型層次結構,Range對象處于第4層:

      Image

       
      現在,自頂而下使用(.)連接這些不同的對象,從而引用Range對象:
      Application.Workbooks.Worksheets.Range
       
      注意,這只是基本的引用框架,并沒有實際識別單個的VBA對象,即如果有幾個工作簿或工作表,如何知道引用哪個?如何知道要處理的具體單元格區(qū)域。
       
      這就需要處理如何引用集合內的特定對象??梢允褂脙煞N方法。
       
      方法1:使用對象名稱,其語法為:集合名(“對象名”)。例如,如果要處理工作表Sheet1,則可以使用:
      Worksheets(“Sheet1”)
      或者:
      Sheets(“Sheet1”)
       
      方法2:使用索引號,其語法為:集合名(索引號)。這樣,上面的代碼可修改為:
      Worksheets(1)
      或者:
      Sheets(1)
       
      好了,解釋清楚這些后,我們回過去看如何引用具體的Range對象。假設要處理工作簿Book1的工作表Sheet1中的單元格A1,則其完全限定引用為:
      Application.Workbooks(“Book1.xlsm”).Worksheets(“Sheet1”).Range(“A1”)
       
      正如你所看到的,完全限定引用需要編寫很長的代碼,繁瑣且難以閱讀。實際上,可以簡化對象引用,使代碼更簡短。
       
      之所以能夠簡化完全限定引用,是因為Excel VBA對象模型有一些默認的對象,當沒有明確輸入時,Excel會假設你引用的是這些對象。
       
      下面來看看一些簡化引用的情形。
       
      情形1Application對象
      Excel總是假設你在處理Application對象,因此,可以從引用中忽略該對象。這樣,上面的完全限定引用代碼可簡化為:
      Workbooks(“Book1.xlsm”).Worksheets(“Sheet1”).Range(“A1”)
       
      情形2:當前工作簿和當前工作表
      Excel總是假設你在處理當前工作簿(標準模塊中代碼所在的工作簿),如果你的目的是處理當前工作簿,則上面的代碼可進一步簡化為:
      Worksheets(“Sheet1”).Range(“A1”)
       
      如果你要處理的工作表是當前活動工作表,代碼又可簡化為:
      Range(“A1”)
       
      小結
      如果想要精通Excel VBA,那么必須掌握ExcelVBA對象模型的原理。隨著不斷的學習和實踐,你會更清楚其中的細節(jié),ExcelVBA對象模型的結構和使用也會越來越熟練。

      歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多