ByRef argument de l'incompatibilité de type Excel VBA

Je travaille avec VBA. J'ai écrit un utilisateur de définir la fonction qui prend un string, de processus et de revenir au propre string. Je ne suis pas sûr de ce qui est mal avec elle. Je ne suis pas capable de l'appeler et de lui demander de traiter mon string et le retourner. Je pense il y a une erreur dans la façon dont je suis la définition ou de la remettre.

Public Function ProcessString(input_string As String) As String
    ' The temp string used throughout the function
    Dim temp_string As String

    For i = 1 To Len(input_string)
        temp_string = Mid(input_string, i, 1)
        If temp_string Like "[A-Z, a-z, 0-9, :, -]" Then
            return_string = return_string & temp_string
        End If
    Next i
    return_string = Mid(return_string, 1, (Len(return_string) - 1))
    ProcessString = return_string & ", "
End Function

Et j'utilise cette fonction comme ceci

Worksheets(data_sheet).Range("C2").Value = ProcessString(last_name)

Dernier nom est une variable de type chaîne, ressemble généralement à ce Lastname*****, et je suis en train d'essayer d'enlever toutes les étoiles derrière elle. L'avoir de retour Lastname sans les étoiles.

J'ai reçu Compile error: ByRef arugment type mismatch quand j'ai essayé de l'exécuter. Je suis avec Windows XP avec Office 2003.

EDIT: j'ai ajouté à la base struction du code que j'ai, j'ai environ 20 lignes de code similaire. Faire la même chose pour chacun des champs dont j'ai besoin.

Private Sub CommandButton2_Click()
' In my original production code I have a chain of these
' Like this Dim last_name, first_name, street, apt, city, state, zip As String
Dim last_name As String

' I get the last name from a fixed position of my file. Because I am 
' processing it from another source which I copied and pasted into excel
last_name = Mid(Range("A4").Value, 20, 13)

' Insert the data into the corresponding fields in the database worksheet
Worksheets(data_sheet).Range("C2").Value = ProcessString(last_name)
Sur quelle ligne l'erreur de drapeau?
Il flaged sur la ligne quand je l'appelle. Worksheets(data_sheet).Range("C2").Value = ProcessString(last_name)

OriginalL'auteur George | 2013-05-17