调用函数中的下标超出范围
Subscript out of range in call function
我正在尝试根据存在的作品sheet 中的哪些信息来填充组合框。此代码在模块的多个区域中重复使用,因此为简单起见,我将其写在调用函数中。不幸的是,我在 If Worksheets("SheetName").Range("EG4") = "Current rate" Then
行收到 "subscript out of range" 错误。我正在使用字符串 SheetName
来识别正确的 sheet 并且它正确地捕获了名称。
任何关于为什么会发生此错误的建议都将受到赞赏。下面是我的代码的副本。
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
我找到了答案。我必须删除 "SheetName"
周围的引号,以便正确读取字符串并调用所需的工作表。找出一个简单但令人沮丧的错误!
我正在尝试根据存在的作品sheet 中的哪些信息来填充组合框。此代码在模块的多个区域中重复使用,因此为简单起见,我将其写在调用函数中。不幸的是,我在 If Worksheets("SheetName").Range("EG4") = "Current rate" Then
行收到 "subscript out of range" 错误。我正在使用字符串 SheetName
来识别正确的 sheet 并且它正确地捕获了名称。
任何关于为什么会发生此错误的建议都将受到赞赏。下面是我的代码的副本。
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
我找到了答案。我必须删除 "SheetName"
周围的引号,以便正确读取字符串并调用所需的工作表。找出一个简单但令人沮丧的错误!