Friday, November 25, 2005

第十五章 控制項

第十五章 控制項
15-01 取得表單的控制項名稱

應用範例
Sub 顯示控制項的名稱()
MsgBox “依序顯示各控制項的名稱”
suu = ActiveSheet.Shapes.Count
For i = 1 To suu
henji = MsgBox (“第 ” & i & “ 個控制項名稱為:” & ActiveSheet.Shapes(i).Name & “,繼續嗎?”, vbYesNo)
If henji = vbNo Then Exit Sub
Next i
End Sub

15-02 設定表單控制項的值

應用範例
Sub 設定控制項的值()
MsgBox “點選選項按鈕2、取消勾選核取方塊4”
ActiveSheet.[option button 2].Value = True
ActiveSheet.[check box 4].Value = False
End Sub

15-03 取得表單控制項的值

應用範例
Sub 顯示控制項的值()
MsgBox “顯示選項按鈕、核取方塊、下拉式方塊、清單方塊的值”
MsgBox “選項按鈕2的值:” & ActiveSheet.[option button 2].Value & vbCR & “選項按鈕3的值:” & ActiveSheet.[option button 3].Value & vbCR & “核取方塊4的值:” & ActiveSheet.[check box 4].Value & vbCR & “下拉式方塊的值:” & ActiveSheet.[drop down 5].Value & vbCR & “清單方塊的值:” & ActiveSheet.[list box 6].Value
End Sub

15-04 隱藏表單控制項

應用範例
Sub 隱藏按鈕()
MsgBox “隱藏使用中工作表內的按鈕1”
ActiveSheet.[button 1].Visible = False
MsgBox “回復原來的狀態”
ActiveSheet.[button 1].Visible = True
End Sub

15-05 按下按鈕後執行巨集(表單)

應用範例
按下按鈕,即執行10-05的「資料排序」程序。
※請參閱 10-05應用範例(資料排序)

15-06 取得控制工具箱的控制項名稱

應用範例
Sub 顯示控制項的名稱()
MsgBox “依序顯示各控制項的名稱”
suu = ActiveSheet.Shapes.Count
For i = 1 To suu
henji = MsgBox (“第 ” & i & “ 個控制項名稱為:” & ActiveSheet.Shapes(i).Name & “,繼續嗎?”, vbYesNo)
If henji = vbNo Then Exit Sub
Next i
End Sub

15-07 在控制工具箱的清單方塊、下拉式方塊中新增清單中的項目

應用範例1
Sub 新增下拉式方塊的項目()
MsgBox “新增下拉式方塊的項目”
With ActiveSheet.ComboBox1
.AddItem “台北市”
.AddItem “台中市”
.AddItem “高雄市”
End With
End Sub

應用範例2
Sub 新增清單方塊的項目()
MsgBox “新增清單方塊的項目”
With ActiveSheet.ListBox1
.AddItem “分公司A”
.AddItem “分公司B”
.AddItem “分公司C”
End With
End Sub

15-08 設定控制項的值(控制工具箱)

應用範例
Sub 設定控制項的值()
MsgBox “設定文字方塊、選項按鈕及核取方塊的值”
ActiveSheet.TextBox1.Value = 100
ActiveSheet.OptionButton1.Value = True
ActiveSheet.CheckBox1.Value = True
End Sub

15-09 取得控制工具箱的控制項值

應用範例
Sub 顯示控制項的值()
MsgBox “顯示文字方塊、選項按鈕、核取方塊、清單方塊及下拉式方塊的值”
MsgBox “文字方塊的值:” & ActiveSheet.TextBox1.Value & vbCR & “OptionButton1的值:” & ActiveSheet.OptionButton1.Value & vbCR & “OptionButton2的值:” & ActiveSheet.OptionButton2.Value & vbCR & “CheckBox1的值:” & ActiveSheet.CheckBox1.Value & vbCR & “清單方塊的值:” & ActiveSheet.ListBox1.Value & vbCR & “下拉式方塊的值:” & ActiveSheet.ComboBox1.Value
End Sub

15-11 指令按鈕與事件程序

應用範例
按下CommandButton1按鈕後,即執行姓名排序的程序

Private Sub CommandButton1_Click()
hanni = “A2:C12”
kii = “B2”
ActiveSheet.Range(hanni).Select
retu = Range(kii).Value
henji = MsgBox(“對” & retu & “遞增排序”, vbYesNo)
If henji = vbNo Then Exit Sub
Selection.Sort key1:=Range(kii), header:=xlYes, Order1:=xlAscending
End Sub

15-12 顯示視窗或對話方塊(自訂表單)

應用範例
Sub 顯示自訂表單()
MsgBox “顯示自訂表單”
UserForm1.Show
End Sub

15-13 變更自訂表單的高度及寬度

應用範例
Sub 設定自訂表單的尺寸()
MsgBox “將UserForm1的高度與寬度各放大1.5倍”
takasa = UserForm1.Height
haba = UserForm1.Width
UserForm1.Height = takasa * 3/2
UserForm1.Width = haba * 3/2
UserForm1.Show
MsgBox “回復原來的狀態”
UserForm1.Height = takasa
UserForm1.Width = haba
End Sub

15-14 指令按鈕與事件程序

應用範例
請將下列各應用範例的程式代入Sub ()~End Sub之間後執行:
15-19 取得自訂表單內的控制項數量
15-24 隱藏自訂表單
15-27 關閉自訂表單

15-15 自訂表單與事件程序

應用範例
請將下列各應用範例的程式代入Sub ()~End Sub之間後執行:
15-28 一開啟自訂表單,即設好各控制項的值

15-16 控制項與事件程序

應用範例
請將下列各應用範例的程式代入Sub ()~End Sub之間後執行:
15-29  變更控制項的值後即顯示訊息
15-17 設定自訂表單的初始位置

應用範例
Sub 設定自訂表單的位置()
MsgBox “將自訂表單置於螢幕的左上角”
UserForm1.StartupPosition = 3
UserForm1.Show
End Sub

15-18 設定自訂表單的位置

應用範例 按下CommandButton1按鈕後即變更自訂表單的位置
n 請使用Virtual Basic編輯器,在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。
Private Sub CommandButton1_Click()
MsgBox “變更自訂表單的位置”
x = UserForm1.Left
y = UserForm1.Top
UserForm1.Left = x/2
UserForm1.Top = y/2
MsgBox “回復原來的狀態”
UserForm1.Left = x
UserForm1.Top = y
End Sub
15-19 取得自訂表單內的控制項數量

應用範例
按下CommandButton1按鈕後即顯示自訂表單中控制項的數量
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

Private Sub CommandButton1_Click()
MsgBox “顯示自訂表單UserForm1內的控制項數量”
MsgBox UserForm1.Controls.Count
End Sub

15-20 取得自訂表單中控制項的名稱

應用範例
按下CommandButton1按鈕後即依序顯示自訂表單中的控制項名稱
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

Private Sub CommandButton1_Click()
MsgBox “依序顯示自訂表單中的控制項名稱”
i = 1
For Each youso in UserForm1.Controls
henji = MsgBox(“第 ” & i & “ 個控制項的名稱為:” & youso.Name & “,繼續嗎?”, vbYesNo)
If henji = vbNo Then Exit Sub
i = i +1
Next youso
End Sub

15-21 設定自訂表單控制項的值

應用範例
Sub 設定控制項的值()
MsgBox “將100填入文字方塊中、點選OptionButton1、勾選CheckBox1後開啟自訂表單UserForm1”
UserForm1.TextBox1.Value = 100
UserForm1.OptionButton1.Value = True
UserForm1.CheckBox1.Value = True
UserForm1.Show
End Sub

15-22 自儲存格範圍中指定清單方塊及下拉式方塊的項目來源

應用範例1
Sub 指定清單方塊內的項目()
MsgBox “將儲存格範圍A2到A10中的資料作為清單方塊ListBox1內的項目”
UserForm1.ListBox1.RowSource = “A2:A10”
UserForm1.Show
End Sub

應用範例2
Sub 指定下拉式方塊內的項目()
MsgBox “將儲存格範圍A2到A10中的資料作為下拉式方塊ComboBox1內的項目”
UserForm1.ComboBox1.RowSource = “A2:A10”
UserForm1.Show
End Sub

15-23 設定清單方塊、下拉式方塊內的項目

應用範例1
Sub 設定清單方塊內的項目()
MsgBox “新增清單方塊內的項目”
With UserForm1.ListBox1
.AddItem “分公司A”
.AddItem “分公司B”
.AddItem “分公司C”
End With
UserForm1.Show
End Sub

應用範例2
Sub 設定下拉式方塊內的項目()
MsgBox “新增下拉式方塊內的項目”
With UserForm1.ComboBox1
.AddItem “台北市”
.AddItem “台中市”
.AddItem “高雄市”, 0
End With
UserForm1.Show
End Sub

15-24 隱藏自訂表單

應用範例
按下CommandButton1按鈕後即隱藏自訂表單
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

Private Sub CommandButton1_Click()
MsgBox “隱藏自訂表單UserForm1”
UserForm1.Hide
MsgBox “回復原來的狀態”
UserForm1.Show
End Sub
15-25 隱藏自訂表單內的控制項

應用範例
按下CommandButton1按鈕後即隱藏核取方塊「CheckBox1」
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

Private Sub CommandButton1_Click()
MsgBox “隱藏核取方塊CheckBox1”
UserForm1.CheckBox1.Visible = False
MsgBox “回復原來的狀態”
UserForm1.CheckBox1.Visible = True
End Sub

15-26 停用自訂表單內的控制項

應用範例
按下CommandButton1按鈕後即停用核取方塊「CheckBox1」
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

Private Sub CommandButton1_Click()
MsgBox “停用CheckBox1”
UserForm1.CheckBox1.Enabled = False
MsgBox “回復原來的狀態”
UserForm1.CheckBox1.Enabled = True
End Sub

15-27 關閉自訂表單

應用範例
按下CommandButton2按鈕後即關閉自訂表單「UserForm1」
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton2將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton2按鈕來執行此應用範例。

Private Sub CommandButton2_Click()
MsgBox “關閉自訂表單UserForm1”
Unload UserForm1
End Sub

15-28 一開啟自訂表單,即設好各控制項的值

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),以滑鼠雙擊UserForm1,將下列程序寫入後,執行15-12的應用範例開啟自訂表單來觀察執行結果。

Private Sub UserForm_Activate()
MsgBox “一開啟UserForm1,即依程序中的設定將資料寫入各控制項內”
UserForm1.TextBox1.Value = “Excel VBA”
UserForm1.OptionButton1.Value = True
UserForm1.CheckBox1.Value = True
With UserForm1.ListBox1
.AddItem “分公司A”
.AddItem “分公司B”
.AddItem “分公司C”
End With
With UserForm1.ComboBox1
.AddItem “台北市”
.AddItem “台中市”
.AddItem “高雄市”
End With
End Sub

15-29 變更自訂表單控制項的值後即顯示訊息

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),按插入→自訂表單(新增自訂表單UserForm2),在UserForm2中新增文字方塊及指令按鈕後,以滑鼠雙擊UserForm2,將下列程序寫入。執行前請參考15-12的應用範例,先開啟自訂表單UserForm2後再依下述說明執行。

說明 在自訂表單UserForm2的文字方塊「TextBox1」內輸入查詢文字後,將顯示「在文字方塊中輸入欲查詢的文字後,請按CommnadButton1按鈕開始搜尋資料」的對話窗;當按下CommandButton1後,開始搜尋的程序(Private Sub CommandButton1_Click()…)。

1. 變更TextBox1內的值後,顯示訊息對話窗
Private Sub TextBox1_AfterUpdate()
MsgBox “在文字方塊中輸入欲查詢的文字後,請按CommnadButton1按鈕開始搜尋資料”
End Sub

2. 按下ConnandButton1後的資料搜尋程序
Private Sub CommandButton1_Click
moji = UserForm2.TextBox1.Value
MsgBox “從使用中儲存格開始搜尋含有「 ” & moji & “」文字的儲存格”
Set iti = Cells.Find(What:=moji, After:=ActiveCell)
If iti Is Nothing Then
MsgBox “查無此資料”
Exit Sub
Else
iti.Select
End If
End Sub

15-30 自訂表單中下拉式方塊與指令按鈕的應用

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

說明 按下CommandButton1指令按鈕後,即將下拉式方塊中被選取的項目寫入儲存格A1內。

設定下拉式方塊的項目
Private Sub UserForm_Activate()
With UserForm1.ComboBox1
.AddItem “台北市”
.AddItem “台中市”
.AddItem “高雄市”
End With
End Sub

按下CommandButton1後
Private Sub CommandButton1_Click()
MsgBox “將下拉式方塊內的值寫入使用中工作表內的A1儲存格中”
atai = UserForm1.ComboBox1.Value
ActiveSheet.Range(“A1”) = atai
End Sub

15-31 自訂表單中清單方塊與指令按鈕的應用

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),在UserForm1中以滑鼠雙擊CommandButton1將下列程序寫入後,執行15-12的應用範例開啟自訂表單,然後再按表單中CommandButton1按鈕來執行此應用範例。

說明 按下CommandButton1指令按鈕後,即將清單方塊中被選取的項目寫入儲存格A1內。

設定清單方塊的項目
Private Sub UserForm_Activate()
With UserForm1.ListBox1
.AddItem “分公司A”
.AddItem “分公司B”
.AddItem “分公司C”
End With
End Sub

按下CommandButton1後
Private Sub CommandButton1_Click()
MsgBox “將清單方塊內被選取的項目寫入使用中工作表內的A1儲存格中”
atai = UserForm1.ListBox1.Value
ActiveSheet.Range(“A1”) = atai
End Sub

15-32 自訂表單中核取方塊與指令按鈕的應用

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),按插入→自訂表單(新增自訂表單UserForm2),在UserForm2中新增兩個核取方塊及一個指令按鈕後,以滑鼠雙擊UserForm2,將下列程序寫入。執行前請參考15-12的應用範例,先開啟自訂表單UserForm2後再依下述說明執行。

說明 在自訂表單UserForm2中勾選CheckBox1、按下CommandButton1後,將隱藏樞紐分析表中的行總計;勾選CheckBox2則隱藏樞紐分析表中的列總計。

Private Sub CommandButton1_Click()
ch1 = UserForm2.CheckBox1.Value
ch2 = UserForm2.CheckBox2.Value
If ch1 = True Then
Selection.PivotTable.RowGrand = False
Else
Selection.PivotTable.RowGrand = True
End If
If ch2 = True Then
Selection.PivotTable.ColumnGrand = False
Else
Selection.PivotTable.ColumnGrand = True
End If
End Sub

15-33 自訂表單中選項按鈕與指令按鈕的應用

應用範例
n 請使用Virtual Basic編輯器(請參閱15-18),按插入→自訂表單(新增自訂表單UserForm2),在UserForm2中新增兩個選項按鈕及一個指令按鈕後,以滑鼠雙擊UserForm2,將下列程序寫入。執行前請參考15-12的應用範例,先開啟自訂表單UserForm2後再依下述說明執行。

說明 在自訂表單UserForm2中點選OptionButton1後按下CommandButton1,圖案將變為立體圖案,若點選的是OptionButton2,圖案將變為平面圖案。

Private Sub CommandButton1_Click()
op1 = UserForm2.OptionButton1.Value
op2 = UserForm2.OptionButton2.Value
If op1 = True Then
Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD1
End If
If op2 = True Then
Selection.ShapeRange.ThreeD.Visible = msoFalse
End If
End Sub

0 Comments:

Post a Comment

<< Home