Błąd "type mismatch" po wywołaniu funkcji

0

Cześć, wywołanie poniższej funkcji powoduje tytułowy błąd. W czym tkwi problem? Idea jest taka by zwrócić fragment tekstu do znaku "+" (wyłącznie).

Public Function find(Inn) As Long
    temp = ""
    
    For i = 1 To Len(Inn)
        ch = Mid(Inn, i, 1)
        If ch Like "[!+]" Then
            temp = temp & ch
        End If
    Next i
    find = CLng(temp)
End Function

Błąd występuje zarówno przy argumencie typu string jak i range.

1

Co jak co ale chyba raczej nikt nie znajdzie błędu zgodności typów w kodzie napisanym bez zachowania jakikolwiek typów. Wiem masło maślane ale zauważ że nie podajesz jakiego typu jest parametr wejściowy Inn (np mogło by być Public Function find(Inn As String) As Long) nie deklarujesz także zmiennych np. Dim temp As String , Dim i As Integer itd.. Ja wiem że VB pozwala na takie rzeczy i nawet pewnie się skompiluje ale właśnie jak tak będziesz pisał to będziesz później miał takie kwiatki.
Poza tym kod jest napisany źle i w zmiennej temp wcale nie będzie działał jak oczekujesz czyli do znaku + tylko cały tekst z wyjątkiem + np. jak na wejściu będziesz miał 12345+abcd to na wyjściu pętli w temp będziesz miał 12345abcd a w tedy konwersja na Long raczej się nie powiedzie i będziesz właśnie miał babola type mismatch.

1 użytkowników online, w tym zalogowanych: 0, gości: 1