Приложение Visual Basic (VBA): хотите вернуть значение True, но вместо этого получите значение False

#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 «, чтобы выйти из цикла раньше, как только он найдет совпадение. Документация