#vba #function #methods #return #boolean
Вопрос:
У меня есть функция, которая возвращает логическое значение, но она всегда возвращает значение False
Public Function CheckCustomerAdded(customer_code As String, customers As Object) As Boolean
Dim added As Boolean
Dim returnval As Boolean
added = False
For i = 0 To customers.Count - 1
If customers.Item(i).customerCode = customer_code Then
added = True
End If
Next i
returnval = added
End Function
Я регистрирую «добавлено» и «возвращено», оба верны.
а затем я вызываю эту функцию, как показано ниже:
Dim checkcustomerexist As Boolean
While Not Fo.atendofstream
line = Fo.ReadLine
If c <> 0 Then
arr = Split(regex.Replace(line, ";"), ";")
checkcustomerexist = CheckCustomerAdded(arr(1) amp; "", customers)
End If
Wend
и когда я регистрирую «checkcustomerexist», он всегда ложен.
Какой шаг пошел не так?
Изменить: Решение после комментария Раймонда я редактирую функцию, как показано ниже:
Public Function CheckCustomerAdded(customer_code As String, customers As Object) As Boolean
For i = 0 To customers.Count - 1
If customers.Item(i).customerCode = customer_code Then
CheckCustomerAdded = True
Exit For
End If
Next i
Конечная Функция
Комментарии:
1. Вы должны присвоить результат имени функции
CheckCustomerAdded
. Изменитеadded = True
наCheckCustomerAdded = True
, вы также можете удалитьadded
иreturnval
переменную. Пока вы этим занимаетесь, вы также можете подумать о том, чтобы добавитьExit For
«послеCheckCustomerAdded = True
«, чтобы выйти из цикла раньше, как только он найдет совпадение. Документация