Проблемы с функцией
Добавлено: 10 авг 2004, 07:41
Подскажите из-за чего функция scan не хотит пахать (пишет ошибку). Есть подозрение, что это не хочет работать for-next (там обоащение к ячейкам). Если да то как энто дело можно обойти.
PS. Заместо scan встроеную функцию "ПРОСМОТР" не предлагать
. Она меня не устраивает (работает только с отсортированной инфой а данные сортировать нельзя)
Код функции:
Function scan(FindName As String, InputMassive As String, Znach As String)
Dim FindRowStart As Integer
Dim FindRowEnd As Integer
Dim Massive As Integer
Dim FindColumn As Integer
Dim MassiveColumn As Integer
FindRowStart = Range(GetValue(FindName)).Row
FindRowEnd = Range(GetValue2(FindName)).Row
Massive = Range(GetValue(InputMassive)).Row
FindColumn = Range(GetValue(FindName)).Column
MassiveColumn = Range(GetValue(InputMassive)).Column
For i = FindRowStart To FindRowEnd
If Trim(Znach) = Cells(i, FindColumn).Value Then scan = Cells(Massive, MassiveColumn).Value: Exit Function
Massive = Massive + 1
Next
End Function
Public Function GetValue(a As String) As String
Dim i As Integer
Dim b As String
For i = 1 To Len(a)
If Mid(a, i, 1) = ":" Then GoTo 100
b = b + Mid(a, i, 1)
Next
100:
GetValue = b
End Function
Public Function GetValue2(a As String) As String
Dim i As Integer
Dim b As String
For i = 1 To Len(a)
If Mid(a, i, 1) = ":" Then b = "": GoTo 100
b = b + Mid(a, i, 1)
100:
Next
GetValue2 = b
End Function
PS. Заместо scan встроеную функцию "ПРОСМОТР" не предлагать

Код функции:
Function scan(FindName As String, InputMassive As String, Znach As String)
Dim FindRowStart As Integer
Dim FindRowEnd As Integer
Dim Massive As Integer
Dim FindColumn As Integer
Dim MassiveColumn As Integer
FindRowStart = Range(GetValue(FindName)).Row
FindRowEnd = Range(GetValue2(FindName)).Row
Massive = Range(GetValue(InputMassive)).Row
FindColumn = Range(GetValue(FindName)).Column
MassiveColumn = Range(GetValue(InputMassive)).Column
For i = FindRowStart To FindRowEnd
If Trim(Znach) = Cells(i, FindColumn).Value Then scan = Cells(Massive, MassiveColumn).Value: Exit Function
Massive = Massive + 1
Next
End Function
Public Function GetValue(a As String) As String
Dim i As Integer
Dim b As String
For i = 1 To Len(a)
If Mid(a, i, 1) = ":" Then GoTo 100
b = b + Mid(a, i, 1)
Next
100:
GetValue = b
End Function
Public Function GetValue2(a As String) As String
Dim i As Integer
Dim b As String
For i = 1 To Len(a)
If Mid(a, i, 1) = ":" Then b = "": GoTo 100
b = b + Mid(a, i, 1)
100:
Next
GetValue2 = b
End Function