电竞比分网-中国电竞赛事及体育赛事平台

分享

【20180828】- Excel VBA工作表引用方式,傻傻也分得清

 鷹擊彩霞 2019-11-03

大家好,我是中藥黨。上期簡單羅列了一下自己在寫分發(fā)合并的時候遇到的好幾個含混不清的定義,發(fā)現(xiàn)梳理之后我自己也更加清晰地掌握了概念,在看一些網(wǎng)上的VBA代碼也不那么是是而非了,其實在Excel VBA的世界中,對于新手來說,這樣相似的概念還有很多,今天就想和大家一塊分辨一下工作表引用的相關的知識點。

有人會說,工作表引用很簡單,使用工作表的名稱就可以啊,比如下圖中,用WorkSheets(“第三張”).Select或者Sheets(“第三張”).Select就可以選擇名稱為“第三張”的工作表。

但是,當你看到網(wǎng)上大神寫的代碼中有Sheet1Sheets(1),Sheets(“1”)的時候,是不是還沒分析代碼邏輯的時候就已經(jīng)腦子短路了呢?

下邊咱們就分析區(qū)別一下工作表引用常用的幾種方法:

1.使用工作表名稱引用

這是大家最常用的方法,使用格式就是WorkSheets(“[工作表名稱]”)或者Sheets(“[工作表名稱]”),這里的工作表名稱就是上圖中的“第三張”,是該工作表name屬性的值。這種用工作表名稱引用的特點就是在WorkSheets或Sheets集合中必須用雙引號引用工作表名稱。所以上邊Sheet1,Sheets(1)和Sheets(“1”)中,只有Sheets(“1”)使用了雙引號,所以它選擇的就是一個工作表名稱為1的工作表,在不修改工作表名稱的情況下Sheets(“1”)是唯一固定的,如下圖。

2.使用工作表索引號引用

工作表索引號是指工作表在工作簿中的位置,Excel根據(jù)工作表在工作表標簽中的位置以1開始從左向右進行編號。這種用索引號引用的特點就是在WorkSheets或Sheets集合中用自然數(shù)數(shù)值標注工作表在集合中的位置。

所以上邊Sheet1,Sheets(1)和Sheets(“1”)中,Sheets(1)就是使用索引號引用的工作表,表示工作表標簽中從左向右第1個工作表,如下圖。如果調(diào)整了工作表的標簽位置,通過索引引用的工作表也會發(fā)生變化。

但是對使用索引引用工作表,像上圖這樣單獨選擇工作表的用法并不常見,因為工作表標簽的位置太容易被改變,我個人覺得通過索引引用工作表一是在用For循環(huán)遍歷工作表集合的時候,如下圖:

二是用在瀏覽工作表上下翻頁中,如下圖:

3.使用工作表的代碼名稱引用

使用Worksheet對象的CodeName屬性可以直接引用工作表對象。例如下圖中“第一張”工作表的CodeName是Sheet1,那么就可以用Sheet1.Select選中“第一張”工作表,CodeName就是VBE工程資源管理器中屬性窗口中“名稱”的值,如下圖:

使用CodeName選擇工作表,如下圖Sheet1.Select,很多小伙伴會錯誤理解成選擇Name屬性為Sheet1的工作表,一定要多加注意哦。

在新建工作表的時候,系統(tǒng)會默認用Sheet1,Sheet2等流水號去自動賦值CodeName和Name屬性。如下圖,通過WorkSheets.Add方法增加兩個工作表,新增第一個工作表的Name為Sheet5,CodeName為Sheet7,新增第二個工作表的Name為Sheet6,CodeName為Sheet8。

在微軟的說明文檔中CodenName屬性運行時不可更改,是一個只讀屬性。所以可在運行VBA代碼前,對已有固定工作表定義有意義的CodeName,方便VBA代碼的編寫。但是除了程序員,一般用戶也不會去修改這個值,因為CodeName就是一個標識唯一的代碼名稱,不會在工作表界面中顯示出來。

比如下圖,將一個數(shù)據(jù)源表的CodeName修改為Sht_dataSource,彈框顯示該工作表已使用區(qū)域的列數(shù)。


所以,用CodeName引用的工作表特點也很明顯,在VBA中能夠直接使用工作表的CodeName引用工作表,優(yōu)點即使工作表的Name屬性和工作表標簽所處位置都被修改,代碼仍然能夠正常運;缺點使用不直觀,代碼運行期間不能修改。

綜上所述,三種引用工作表的方法各有特點,在實際應用中不一定局限于哪種引用方法:①引用工作表名稱的方法比較直觀和常見,適用于VBA代碼中沒有修改工作表Name屬性的情況;②引用工作表索引的方法一般用于For循環(huán)遍歷工作表;③使用CodeName引用的方法雖然都規(guī)避了工作表名稱和標簽位置變動的問題,但是它的缺點就是不直觀,不能在程序運行時更改,適用于在VBA程序運行前,對固定工作表定義CodeName,從而方便在VBA中編寫代碼。

Excel VBA學習的小伙伴們,是不是看完此文后,對工作表引用的方式和適用環(huán)境又更加清楚了呢,我認為有了好的概念基礎,才能更好地堆砌代碼的大樓,我在寫文的時候也有了很多收獲和感悟,歡迎大家留言和討論。

猜您喜歡

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多