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