Я запутался, почему следующий код работает в одном случае, а затем не работает в другом.Следующее дает # ЗНАЧЕНИЕ!ошибка.
Function RateFetcher(Plan_Text As String, Zip_Text As String, Sex As String, Tabacco_Use As String, Age As Integer, State As String)
Dim Plan As String
Plan = StrConv("Plan " + Plan_Text, vbLowerCase)
Dim ProperState As String
ProperState = StrConv(State, vbProperCase)
Dim Search_Range As Range
Search_Range = Worksheets(ProperState).Range("A4:A600")
MsgBox (Search_Range)
Dim Location As String
For Each c In Search_Range
If StrConv(c.Value, vbLowerCase) = Plan And c.Offset(1, 0) = Zip_Text Then
Location = c.Address
End If
Next c
Dim Sex_Tab_Offset As Integer
Dim Combined As String
Combined = Sex + Tabacco_Use
If Combined = "F NO" Then
Sex_Tab_Offset = 1
ElseIf Combined = "M NO" Then
Sex_Tab_Offset = 2
ElseIf Combined = "F YES" Then
Sex_Tab_Offset = 3
Else
Sex_Tab_Offset = 4
End If
Dim Age_Offset As Integer
Age_Offset = Age - 65
RateFetcher = Worksheets(ProperState).Range(Location).Offset(Age_Offset, Sex_Tab_Offset).Value
End Function
Принимая во внимание, что это работает.Разница в том, что я явно определяю Search_Range, но я хотел бы иметь гибкость первого примера, потому что тогда мне не придется определять каждый диапазон для поиска.Диапазон для поиска State_name!$A$4:$A$500
.
`
Function RateFetcher(Search_Range As Range, Plan_Text As String, Zip_Text As String, Sex As String, Tabacco_Use As String, Age As Integer, State As String)
Dim Plan As String
Plan = StrConv("Plan " + Plan_Text, vbLowerCase)
Dim ProperState As String
ProperState = StrConv(State, vbProperCase)
'Dim Search_Range As Range
'Search_Range = Worksheets(ProperState).Range("A4:A600")
Dim Location As String
For Each c In Search_Range
If StrConv(c.Value, vbLowerCase) = Plan And c.Offset(1, 0) = Zip_Text Then
Location = c.Address
End If
Next c
Dim Sex_Tab_Offset As Integer
Dim Combined As String
Combined = Sex + Tabacco_Use
If Combined = "F NO" Then
Sex_Tab_Offset = 1
ElseIf Combined = "M NO" Then
Sex_Tab_Offset = 2
ElseIf Combined = "F YES" Then
Sex_Tab_Offset = 3
Else
Sex_Tab_Offset = 4
End If
Dim Age_Offset As Integer
Age_Offset = Age - 65
RateFetcher = Worksheets(ProperState).Range(Location).Offset(Age_Offset, Sex_Tab_Offset).Value
Функция завершения`