- Excel VBA范例大全
- 羅剛君編著
- 1591字
- 2018-12-29 15:15:22
第2章 多表單元格選擇
工作中常因數據較多而將數據存于多個工作表中,或者因工作表內容相同但屬于不同分類而將數據分存于多表。在對工作表數據或者格式做修改時往往需要對多個表進行同樣的操作,對一個個工作表進行修改就會事倍功半。本章中將通過三個不同方面的運用講解多表操作之技巧。
● 實例15同時選擇三個表的B2∶B11區域
● 實例16選擇本表以外所有工作表的B2∶B11區域
● 實例17選中名字包含“星期”的工作表的已用區域
實例15 同時選擇三個表的B2∶B11區域
【技巧說明】 同時選擇三個表的B2∶B11區域。
【案例介紹】 如圖1.33所示之資料表,三個表存放三組員工資料。現需將三個表中的員工“工號”全部加粗顯示,則需先選中三個表的“工號”區域。

圖1.33 資料表
【案例實現】 操作步驟如下:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub選擇三個表的B2到B11() Sheets(Array("A組", "B組", "C組")).Select '組合工作表 Sheets("A組").Activate '激活第一個表 Range("B2:B" & [b1048576].End(xlUp).Row).Select '選擇目標區域 End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,三個表的B2∶B11區都已被選中。
提示
本實例參見光盤樣本:..\第1部分\實例15.xlsm。
【相關知識說明】
Array(arglist):表示數組,參數arglist是一個用逗號隔開的列表,用于給數組賦值。本例中將三個工作表表名組合為一個數組賦值給Array。
實例16 選擇本表以外所有工作表的B2∶B11區域
【技巧說明】 選擇本表以外所有工作表的B2∶B11區域。
【案例介紹】 仍以實例15之數據為例,假設當前表為“A組”,則選“B組”和“C組”的B2∶B11區域。
【案例實現】 操作步驟如下:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub選擇本表以外所有工作表() Dim sh As Worksheet, n%, i%, arr n=ThisWorkbook.Sheets.Count ReDim arr(1 To n) '聲明數組 For Each sh In ThisWorkbook.Sheets '循環檢查工作表表名 If sh.Name <> ActiveSheet.Name Then '僅記錄不等于本表名稱之表 i=i+1 arr(i)=sh.Name '重定義數組為工作表表名 End If Next If i > 0 Then ReDim Preserve arr(1 To i) ThisWorkbook.Sheets(arr).Select '組合工作表 ActiveSheet.[B2:B11].Select '選擇區域 End If End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,則“B組”和“C組”表的B2∶B11都已被選中。
提示
本實例參見光盤樣本:..\第1部分\實例16.xlsm。
【相關知識說明】
(1)ActiveSheet:代表活動工作簿中或指定的窗口或工作簿中的活動工作表(最上面的工作表)。如果沒有活動的工作表,則返回Nothing。后綴.Name即取得工作表的名稱。
(2)ReDim:在過程級別中使用,用于為動態數組變量重新分配存儲空間。
實例17 選中名字包含“星期”的工作表的已用區域
【技巧說明】 選中名字包含“星期”的工作表的已用區域。
【案例介紹】 如圖1.34所示之產量表,有的工作表名稱中包含“星期”二字,有的則沒有,現需要對包含“星期”二字之工作表下已用區域進行選擇。
【案例實現】 操作步驟如下:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub多表選擇() Dim Wks As Worksheet, shtCnt As Integer Dim arr() As Variant, i As Integer shtCnt=ThisWorkbook.Sheets.Count '取得工作表總數 ReDim arr(1 To shtCnt) '預定義數組 For Each Wks In ThisWorkbook.Sheets '在所有工作表中循環 If Wks.Name Like "星期*" Then '如果工作表名稱以“星期”開頭 i=i+1 arr(i)=Wks.Name '將工作表名稱存進數組 End If Next If i > 0 Then '如果存在符合條件的工作表名稱 ReDim Preserve arr(1 To i) '重定義數組 ThisWorkbook.Sheets(arr).Select '組合符合條件的所有工作表 ActiveSheet.UsedRange.Select '選擇已用區域 End If End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 光標定位于任意單元格,使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,除第一個表外所有包含“星期”的工作表都已選中,如圖1.35所示。

圖1.34 產量表

圖1.35 選中后的產量表
提示
本實例參見光盤樣本:..\第1部分\實例17.xlsm。
【相關知識說明】
Like:用來比較兩個字符串。用法為 “字符一”Like “字符二”,支持通配符。
通配符包括“*”和“?”,“*”表示任意字符;“?”表示單個字符。本例中“星期*”表示以“星期”開頭的字符串,字符串長度不限;若是“星期?”,則表示以“星期”開頭,且長度為3的字符串。