Несоответствие типов аргументов 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)