2014-08-28 21 views
0

在Excel 2010中,使用VBA代碼創建宏調用按鈕。查找Excel VBA表單按鈕對象的完整成員列表

注意:這實際上是一個關於在哪裏尋找某種類型的對象的文檔支持的問題,而不是像這樣的編碼事物。

所以......從宏錄製工作,我得到這個(假設我希望把細胞M8成一個按鈕):

Sub MakeMyButton() 

    ' Some basic definitions 
    StarterRow = 8 
    MyLeft = Cells(StarterRow, "M").Left 
    MyTop = Cells(StarterRow, "M").Top 
    MyHeight = Cells(StarterRow, "M").Height 
    MyWidth = Cells(StarterRow, "M").Width 

    ' Now comes the creation bit   
    ActiveSheet.Buttons.Add(MyLeft, MyTop, MyWidth, MyHeight).Select 
    With Selection 
     .AltText = "View" 
     .OnAction = "afRoomText" 
     ' .Value = xlOff 
     ' .LinkedCell = "M" & StarterRow 
     ' .Display3DShading = True 
    End With 
End Sub 

的問題是,當然,.value的和.LinkedCell和.Display3DShading,這裏標記爲備註,對Buttons.Add無效 - 不夠公平。但我似乎無法找到一個完整的列表,說明這個對象的有效性!任何人都知道在哪裏看? (附帶說一句,如何使用Excel VBA中沒有明顯記錄的「CheckBoxes.Add」這樣的記錄宏事物?如果您在文檔中尋找「CheckBoxes」,您會發現很多但是沒有實際的信息,就好像這只是自動使用的已棄用的代碼....)

+2

更改您的VBE的選項,迫使'選項Explicit'! – 2014-08-28 07:59:46

回答

2

總是使用Dim聲明所有變量。對於對象(如Button),這會讓您訪問自動完成。例如:

Dim b As Button ' Aha! 
Set b = ActiveSheet.Buttons.Add(324, 102, 108, 51) 

Autocompletion for Button object

另一種方式來創建一個按鈕:

Dim but As Shape 
Dim sh As Worksheet 

Set sh = ActiveSheet 
Set but = sh.Shapes.AddFormControl(xlButtonControl, 100, 100, 100, 100) 

With but 
    .AlternativeText = "View" 
    .OnAction = "afRoomText" 
    With .TextFrame 
     .Characters.Text = "Press Me" 
     .Characters.Font.Color = RGB(255, 50, 50) 
    End With 
End With 
+0

++很好的答案。您也可以選擇'b'並按F1,並且大部分時間會將您帶到開發人員參考。此外,如果您正在使用類,則值得擊中F2並通過對象瀏覽器查找類屬性。 – 2014-08-28 08:56:02