2016-10-24 3 views
0

Я пытаюсь заполнить ComboBox в зависимости от того, какая информация из таблицы присутствует. Этот код повторно используется во многих областях модуля, поэтому я написал его в функции вызова для простоты. К сожалению, я получаю ошибку «индекс вне диапазона» в строке If Worksheets("SheetName").Range("EG4") = "Current rate" Then. Я использую строку SheetName, чтобы определить правильный лист, и он правильно запоминает имя.Подзаголовок вне диапазона в функции вызова

Оцените, почему эта ошибка может возникнуть. Ниже приведена копия моего кода.

Sub FillComboBox(X As Integer) 
Dim Combobox As String 
Dim SheetName As String 

With Application 
    .DisplayAlerts = False 
    .ScreenUpdating = False 
End With 

Combobox = "ComboBox" & CStr(X) 
SheetName = "Scenario" & CStr(X) 

    If Worksheets("SheetName").Range("EG4") = "Current rate" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 0 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Current rate minus 1%" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 1 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Current rate minus 2%" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 2 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Primary rate" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 0 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Secondary rate" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 1 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Alternate rate" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 2 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Sun Term - NA" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 0 
     End With 
    ElseIf Worksheets("SheetName").Range("EG4") = "Not applicable" Then 
     With ScenarioImport.Controls(Combobox) 
     .ListIndex = 0 
     End With 
    End If 

End Sub 

ответ

0

Я нашел ответ. Мне нужно было исключить цитаты около "SheetName", чтобы строка была прочитана надлежащим образом и вызывается требуемый рабочий лист. Простая, но разочаровывающая ошибка, чтобы понять!

Смежные вопросы