2010-07-23 102 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中无论如何)