2010-07-23 100 views
0

使用Excel 2007 VBAExcel 2007中VBA項目添加表名稱列表框

有一個表「儀表板」,還有其他表,但一些特殊的任務表,可以是在書中任何地方,但總是會牀單之間找到「TaskNew」和「TaskEnd」。這些特殊任務表的數量會有所不同。

在儀表板激活時,要使用所有特殊任務工作表的名稱填充列表框,以便用戶可以選擇表單下拉菜單並導航到該工作表。

在運行時錯誤之後的結果「438」對象不支持此屬性或方法:

Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 

Dim StartIndex As Integer 
Dim EndIndex As Integer 
Dim LoopIndex As Integer 
'Dim sht As Worksheet 
StartIndex = Sheets("TaskNew").Index + 1 
EndIndex = Sheets("TaskEnd").Index - 1 
For LoopIndex = StartIndex To EndIndex 
    'SheetsNavigationDropDown.AddItem Sheets(LoopIndex).Name 
    'Sheets("Dashboard").ListBox20.AddItem Sheets("Sample").Name 
    Sheets("Dashboard").ListBox20.AddItem Sheets(LoopIndex).Name 
Next LoopIndex 

我已經嘗試過了也剛剛ListBox20.AddItem ...但仍然無法正常工作。是的,ListBox20存在於表格(「儀表板」)上,是的,我編輯它的名稱以消除空格。

它扼流器/突出顯示錶(「儀表板」)列表....調試時線。

想法?

回答

0

對不起,回答了我自己的問題,關鍵是切換到一個activex表單元素,而不是常規。

Sheets("Dashboard").TaskSheetsComboBox.Clear 
Dim StartIndex As Integer 
Dim EndIndex As Integer 
Dim LoopIndex As Integer 
StartIndex = Sheets("TaskNew").Index + 1 
EndIndex = Sheets("TaskEnd").Index - 1 
For LoopIndex = StartIndex To EndIndex 
    Sheets("Dashboard").TaskSheetsComboBox.AddItem Sheets(LoopIndex).Name 
Next LoopIndex 

Private Sub TaskSheetsComboBox_Click() 
    Sheets(Sheets("TaskNew").Index + TaskSheetsComboBox.ListIndex + 1).Activate 
End Sub 
0

還不如用一個全面的檢查開始:

Dim o As OLEObject 

Debug.Print "---" 
For Each o In Sheets("Dashboard").OLEObjects 
    Debug.Print o.Name & " = " & o.progID 
Next o 
Debug.Print "---" 

,你應該得到ListBox20 = Forms.Listbox.1作爲結果

之一(編輯:這部作品在Excel 2003中無論如何)