No.1
通常對Excel工作表進行操作的時候,系統會預設一個活動工作表,這一步在開啟Exce檔案的時候,系統會自動確認選擇。
但是,在多個工作表之間跳轉的情況下,就需要我們對工作表進行甄別選擇了。
怎麼選擇要操作的工作表呢?
有幾種方法:
在知道工作表名稱的情況下選擇。在知道某一個區域物件的情況下選擇。迴圈工作表遍歷選擇。本節我們介紹第二種,在知道某一個區域物件的情況下選擇。
也就是Range物件之下的Worksheet屬性。
No.2Range物件,給提供了一種屬性,可返回一個工作表物件,這個工作表物件就是這個Range物件所在的工作表。
如上圖,第二行程式碼所示:
Range("NowRange").Worksheet
這行程式碼返回一個工作表物件,是包含“NowRange”名稱區域的一個工作表。
這樣程式設計應用的時候,就可以對包含此名稱的表進行一些操作。
在一些情況下如下程式碼也同樣返回一個工作表物件。
如:Range("NowRange").Parent
Parent是一個返回父物件的屬性,上述程式碼也可返回一個Worksheet物件。
它必須是區域名稱"NowRange"的父物件。
下圖為例,對Range.Worksheet屬性進行說明。
No.3通用聲明裡設定一些常量,使用Const 變數名="字串"方法。
使用如下程式碼的時候,要根據自己的工作表修改相應的工作表名稱和單元格區域。
執行之後,返回區域名稱為Ra的工作表名稱"Sheet1"。
Const s1 = "Sheet1" '常數工作表名Const s2 = "Sheet2" '常數工作表名Const Ra = "Range1" '常數單元格區域名Const Rb = "Range2" '常數單元格區域名Const Raddress = "B2:D12" '常數單元格區域
按鈕程式碼
Private Sub CommandButton2_Click() setActiveSheet s1, Ra, Raddress'呼叫過程 Dim R As Range Set R = ActiveSheet.Range(Ra) Dim w As Worksheet Set w = R.Worksheet MsgBox "當前工作表: " & w.Name, vbInformation, "提示"End Sub
過程程式碼
Dim st As WorksheetDim Ranges As RangeSub setActiveSheet(s, Ra, Raddress) Set st = ThisWorkbook.Worksheets(s) st.Activate Set Ranges = st.Range(Raddress) Ranges.Name = RaEnd Sub
此程式碼應用了一個常用模組,如上圖片。
功能為設定當前工作表和表格區域、名稱。
這一步很重要,在呼叫之後才可以實現工作表物件返回。
初學VBA程式碼,可能對模組的使用比較陌生,逐漸熟練以後會得心應手的。
如本例中返回一個工作表名稱,並沒有太大意義,更重要的是,我們得到了一個工作表物件"W"。
利用這個物件"W",可以做很多事情。
就像在茫茫人海中找到了某一個人,知道了他的名字。但是這有什麼意義呢,更大意義在於,找到這個人要和他進行互動,要和他產生某種聯絡,最終生產某些價值。
這就是下一步程式設計的工作所在。
當然,看上去沒有意義的事情,是很重要的一件事情,在和這個物件產生某些互動的情況之前,首先要找到它。
就如一枚導彈,發射之前,要準確鎖定目標,這個過程就顯得十分有必要了。
不然就變成了無的放矢,失了準心,導彈就毫無價值。
所以,掌控Range.Worksheet屬性,很有必要。
---END---