2016-10-24 14 views
0

ワークシートのどの情報が存在するかによって、ComboBoxに値を設定しようとしています。このコードはモジュールの複数の領域で再利用されるので、簡単にするためコール関数で記述しました。残念ながら、If Worksheets("SheetName").Range("EG4") = "Current rate" Thenという行に "subscript out of range"というエラーが表示されています。私は正しいシートを識別するために文字列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"の引用符を削除して、文字列を適切に読み込み、必要なワークシートを呼び出さなければなりませんでした。シンプルだが、欲求不満のミスを理解する!

関連する問題