0

我已经编写了以下代码行,用于根据所选的下拉列表项导航到工作表。它第一次工作但我得到运行时错误 9 - 下标超出范围错误,当我下次尝试这样做时。我在
“ActiveWorkbook.Sheets(cboDependentList.Value).Activate”行中遇到错误

下面是代码行:

'Populate dependent combo box with appropriate list items                                 
'according to selection in cboCategoryList.
Sub test()                                                   
    Dim rng As Range   
    Dim ws As Worksheet    
    Dim str As String     

    Set ws = Worksheets("Lists")     
    str = cboCategoryList.Value      
    Me.cboDependentList.Clear       

    On Error Resume Next         
    For Each rng In ws.Range(str)        
      Me.cboDependentList.AddItem rng.Value       
    Next rng         

End Sub

Sub cboDependentList_Change()        
      ActiveWorkbook.Sheets(cboDependentList.Value).Activate      
End Sub

Private Sub Worksheet_Activate()         
    'Populate combo box with inventory categories.         
    Dim rng As Range         
    Dim ws As Worksheet        

    Set ws = Worksheets("Lists")         
    Me.cboCategoryList.Clear        

    For Each rng In ws.Range("Category")         
      Me.cboCategoryList.AddItem rng.Value            
    Next rng                      

End Sub             
4

1 回答 1

0

有时,excel 的调试器不会突出显示实际触发错误的代码行,而是突出显示调用者之一(在调用堆栈中较高)。

在这种情况下,activate 方法可能不会直接导致运行时错误 9 - 下标超出范围错误,但它在子例程 Worksheet_Activate 中的影响可能。我建议您在调用激活的行上设置一个断点,并在调试模式下单步执行代码。如果这不起作用,您可能必须在子例程 Worksheet_Activate 的开头设置断点。

于 2013-07-19T12:18:54.840 回答