久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Excel中的窗體控件和ActiveX控件

 yuxinrong 2010-01-12

Excel中的窗體控件和ActiveX控件

2009年1月21日

Excel中有兩種不同的控件,。一種是窗體工具條控件(Forms toolbar controls),通過點擊菜單“視圖”->“工具欄”,,在彈出菜單上選擇“窗體”,,將出現(xiàn)“窗體”工具條控件窗口。另外一種是ActiveX控件,,通過點擊菜單“視圖”->“工具欄”,,在彈出菜單上選擇“控件工具箱”(也可以選擇“Visual Basic”,然后再在工具欄上選擇“控件工具箱”),,將出現(xiàn)“控件工具箱”窗口,。

窗口工具條控件是Excel5和Excel95留下來的東西(在Excel 97后的版本中,,添加一個Dialog Sheet后,將可以看到這個窗體工具條窗口),,從Excel 97開始,,Dialog Sheet被UserForm代替,并且開始使用ActiveX控件,。

從某些角度來講,,窗體控件甚至比ActiveX控件更有優(yōu)勢。

  1. 如果你需要在Chart工作表中添加控件,,只能使用窗體工具條控件,。
  2. 更加方便使用VBA代碼創(chuàng)建窗體控件以及定義事件過程。
  3. 窗體控件的事件過程可以放在標準模塊,,可以使用任何有效的VBA過程名稱,,可以在控件創(chuàng)建之前就創(chuàng)建事件過程。
  4. 可以給多個控件賦于一個相同的過程,。
  5. 可以使用Application.Caller來獲取窗體控件的名稱,。

窗體控件比ActiveX控件簡單,基本上只有一個Click事件,。而ActiveX控件可以響應(yīng)豐富的事件,,ActiveX控件的事件只能放在控件所在的類模塊(工作表模塊)或窗體模塊。過程名稱由控件名和事件名稱組成,。如果你在控件不存在的時候就創(chuàng)建這個控件的事件過程,,然后再在代碼中引用這個控件,將會出現(xiàn)編譯錯誤,,所以必須使用代碼創(chuàng)建事件過程,。


在VBA中控制窗體控件的方法有點不同,可以使用對象名稱,,但這些對象名稱在對象瀏覽器中被隱藏,,這樣輸入代碼時沒有方法和屬性提示(你可以在“對象瀏覽器”的“類”一欄中單擊右鍵,然后選擇“顯示隱含成員”查看這些窗體控件),。另外有一個簡單的方法就是所有的窗體控件都用DrawingObjects來表示,。
下面就是窗體控件的示例代碼,相對應(yīng)的控件從字面上很容易理解,。對于復(fù)選框和選項按鈕,,賦值xlOn給Value屬性表示選擇,賦值xlOff則表示取消選擇,。下拉和列表框的Value屬性則表示選擇的第幾個項目,,從1開始。

Sub ChangeControls()
'Sheet1.Labels("標簽 1").Caption = "我是標簽1"
    'Sheet1.Buttons("按鈕 2").Caption = "點擊我吧!"
    'Sheet1.CheckBoxes("復(fù)選框 3").Value = xlOn
    'Sheet1.OptionButtons("選項按鈕 4").Value = xlOn
    'Sheet1.ListBoxes("列表框 5").Value = 2
    'Sheet1.DropDowns("下拉框 6").Value = 4
    Sheet1.DrawingObjects("標簽 1").Caption = "我是標簽1"
Sheet1.DrawingObjects("按鈕 2").Caption = "點擊我吧!"
Sheet1.DrawingObjects("復(fù)選框 3").Value = xlOn
Sheet1.DrawingObjects("選項按鈕 4").Value = xlOn
Sheet1.DrawingObjects("列表框 5").Value = 2
Sheet1.DrawingObjects("下拉框 6").Value = 4
End Sub

這個是使用VBA代碼在工作表中添加窗體控件的例子。

Sub InsertDropDown()
Dim ctl As DropDown         ' 聲明下列列表變量
    Sheet2.Select
Cells(3, 3).Select
With ActiveCell
' 在活動單元格位置創(chuàng)建下列列表
        Set ctl = Sheet2.DropDowns.Add(.Left, .Top, .Width, .Height)
' 給下拉列表指定事件過程
        ctl.OnAction = "EnterData"
ctl.AddItem "Item 1"
ctl.AddItem "Item 2"
ctl.AddItem "Item 3"
ctl.AddItem "Item 4"
ctl.AddItem "Item 5"
ctl.ListIndex = 1   ' 第一個項目的ListIndex是0
    End With
End Sub
Sub EnterData()
' 通過Application.Caller來獲得下拉列表對象
    With Sheet2.DropDowns(Application.Caller)
Cells(1, 1) = .List(.ListIndex)
End With
End Sub

這是使用VBA代碼添加ActiveX控件的例子,。

Sub InsertComboBox()
Dim ole As OLEObject
Dim ctl As MSForms.ComboBox
Dim iLine As Long
Dim objCodeModule As Object
 
Sheet2.Select
Cells(3, 5).Select
' 插入復(fù)合框
    Set ole = Sheet2.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
' 命名
    ole.Name = "Combo"
Set ctl = ole.Object
ctl.Name = "Combo"
 
ctl.AddItem "Item1"
ctl.AddItem "Item2"
ctl.AddItem "Item3"
ctl.AddItem "Item4"
ctl.AddItem "Item5"
ctl.ListIndex = 0       ' 第一個項目的ListIndex是0

' 添加Click事件,需要引用Microsoft Visual Basic for Application Extensibility庫
    Set objCodeModule = ThisWorkbook.VBProject.VBComponents("Sheet2").CodeModule
iLine = objCodeModule.createeventproc("Click", "Combo")
Call objCodeModule.ReplaceLine(iLine + 1, " EnterData1")
End Sub
Sub EnterData1()
' 要使用OLEObject對象的Object屬性來獲得ComboBox對象
    With Sheet2.OLEObjects("Combo")
Cells(2, 1) = .Object.Text
End With
End Sub

過程InsertComboBox將在Sheet2的工作表模塊中自動生成復(fù)合框的Click事件過程,。

Private Sub Combo_Click()
EnterData1
End Sub

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多