Несоответствие типов аргументов ByRef в Excel VBA

Я работаю с VBA. Я написал пользовательскую функцию определения, которая принимаетstringобработайте и верните очищенныйstring, Я не уверен, что с ним не так. Я не могу вызвать его и попросить обработать мою строку и вернуть ее. Я думаю, что есть ошибка в том, как я определяю или возвращаю ее.

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

И я использую эту функцию, как это

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

Фамилия является строковой переменной, обычно выглядит такLastname*****и я пытаюсь убрать все звезды за ним. ВернутьLastname без звезд.

я получилCompile error: ByRef arugment type mismatch когда я попытался запустить это. Я использую Windows XP с Office 2003.

РЕДАКТИРОВАТЬ: я добавил базовую структуру кода, у меня есть, около 20 строк аналогичного кода. Делать то же самое для каждого поля мне нужно.

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)

Ответы на вопрос(5)

Ваш ответ на вопрос