VBA-使用ActiveX控件


Active控件的在設計模式下才能更改,進行操作:按鈕主要用到的屬性有 caption "按鈕什么名字";visible“按鈕是否可見”  enable“按鈕是否可編輯” 這三個屬性值,其余都比較簡單常用

Sub test()
Sheet1.CommandButton1.Caption = "結束" '更改名字
Range("a1") = Sheet1.CommandButton1.Caption '將名字賦值給a1
Sheet1.CommandButton1.Top = Sheet1.CommandButton1.Top + Sheet1.CommandButton1.Height '移動
End Sub

  針對commandbutton 按鈕主要使用兩個事件 click 和 mousemove

Private Sub CommandButton1_Click()
Range("e3") = 8
End Sub
--------------------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox "你指我干嘛"
End Sub

標簽控件label:caption主要決定里面寫什么內容 其余 enable,visible作用與按鈕相同:主要是用來看的不是用來寫的,如果需要用戶寫那就需要文本框

                  文本框

Sub test()
Sheet1.Label1.Caption = "完美"
End Sub

選擇按鈕OptionButton  這個控件比其他多了兩個  GroupName:組名 (這樣同樣的組名按鈕只能選擇一個);Value:返回值

        

Sub test()
With Sheet1
    If .OptionButton1.Value = True Then
        MsgBox "你選擇的是男"
    ElseIf .OptionButton2.Value = True Then
        MsgBox "你選擇的是女"
    Else
        MsgBox "你沒有選擇"
    End If
End With
End Sub

  它也有自己的事件 主要是click事件

Private Sub OptionButton1_Click()
MsgBox ""
End Sub

微調按鈕事件 :沒有caption屬性,但是有其他,value,min,max 主要屬性

Sub xieru()
Range("a1") = Sheet1.SpinButton1.Value
End Sub             '只有在運行的時候才會有值
Private Sub SpinButton1_Change()
Call xieru
End Sub  '使用自己的時間 再點擊按鈕,值就直接改變了   改變值的范圍是 min 到 max

幾個控件聯合制作一個考試系統

 

 

 

Sub xieru()
Dim i As Integer
i = Sheet2.SpinButton1.Value

With Sheet2
    '清空題目
    .OptionButton1.Value = False
    .OptionButton2.Value = False
    .OptionButton3.Value = False
    .OptionButton4.Value = False
    '寫入題目
    .Label2.Caption = i
    .Label3.Caption = Sheet3.Range("a" & i + 1)
    .Label4.Caption = Sheet3.Range("b" & i + 1)
    .Label5.Caption = Sheet3.Range("c" & i + 1)
    .Label6.Caption = Sheet3.Range("d" & i + 1)
    .Label7.Caption = Sheet3.Range("e" & i + 1)
    '隱藏
    If .Label6.Caption = "" Then
        .OptionButton3.Visible = False
    Else
        .OptionButton3.Visible = True
    End If
    If .Label6.Caption = "" Then
        .OptionButton4.Visible = False
    Else
        .OptionButton4.Visible = True
    End If
    '返回之前的答案
    If Sheet3.Range("g" & i + 1) = "A" Then
        .OptionButton1.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "B" Then
        .OptionButton2.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "C" Then
        .OptionButton3.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "D" Then
        .OptionButton4.Value = True
    End If
End With
End Sub

sheet2考試界面里的

Private Sub OptionButton1_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "A"
End Sub
-------------------------------------
Private Sub OptionButton2_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "B"
End Sub
-------------------------------------
Private Sub OptionButton3_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "C"
End Sub
-------------------------------------
Private Sub OptionButton4_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "D"
End Sub
-------------------------------------
Private Sub SpinButton1_Change()
Call xieru
End Sub

寫入這個主要是想說明性下帶參數的過程的用處:如下如果考試界面多出兩個按鈕,那么這個時候,使用帶參數的過程能省很多代碼

 

 

最終版

Sub xieru(i)
With Sheet2
    '清空題目
    .OptionButton1.Value = False
    .OptionButton2.Value = False
    .OptionButton3.Value = False
    .OptionButton4.Value = False
    '寫入題目
    .Label2.Caption = i
    .Label3.Caption = Sheet3.Range("a" & i + 1)
    .Label4.Caption = Sheet3.Range("b" & i + 1)
    .Label5.Caption = Sheet3.Range("c" & i + 1)
    .Label6.Caption = Sheet3.Range("d" & i + 1)
    .Label7.Caption = Sheet3.Range("e" & i + 1)
    '隱藏
    If .Label6.Caption = "" Then
        .OptionButton3.Visible = False
    Else
        .OptionButton3.Visible = True
    End If
    If .Label6.Caption = "" Then
        .OptionButton4.Visible = False
    Else
        .OptionButton4.Visible = True
    End If
    '返回之前的答案
    If Sheet3.Range("g" & i + 1) = "A" Then
        .OptionButton1.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "B" Then
        .OptionButton2.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "C" Then
        .OptionButton3.Value = True
    ElseIf Sheet3.Range("g" & i + 1) = "D" Then
        .OptionButton4.Value = True
    End If
End With
End Sub

sheet2中的按鈕

Private Sub CommandButton1_Click()
Call xieru(1)
Sheet2.SpinButton1.Value = 1
End Sub
----------------------------------
Private Sub CommandButton2_Click()
Call xieru(8)
Sheet2.SpinButton1.Value = 8
End Sub
----------------------------------
Private Sub OptionButton1_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "A"
End Sub
----------------------------------
Private Sub OptionButton2_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "B"
End Sub
----------------------------------
Private Sub OptionButton3_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "C"
End Sub
----------------------------------
Private Sub OptionButton4_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "D"
End Sub
----------------------------------
Private Sub SpinButton1_Change()
Call xieru(Sheet2.SpinButton1.Value)
End Sub

 VBA-窗體與控件 :用到了在學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM