Tôi đang làm việc với VBA. Tôi đã viết một hàm xác định người dùng cần có một string
, xử lý nó và trả về một string
được làm sạch. Tôi không chắc điều gì sai với nó. Tôi không thể gọi nó và yêu cầu nó xử lý chuỗi của tôi và trả lại nó. Tôi nghĩ rằng có một sai lầm trong cách tôi xác định hoặc trả lại nó.Loại đối số ByRef không khớp trong Excel VBA
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
Và tôi sử dụng chức năng này như
Worksheets(data_sheet).Range("C2").Value = ProcessString(last_name)
tên cuối này là một biến chuỗi, thường trông giống như Lastname*****
này, và tôi đang cố gắng để loại bỏ tất cả các ngôi sao đằng sau nó. Trả lại Lastname
mà không cần sao.
Tôi đã nhận được Compile error: ByRef arugment type mismatch
khi tôi cố gắng chạy ứng dụng này. Tôi đang sử dụng Windows XP với Office 2003.
EDIT: Tôi đã thêm cấu trúc cơ bản của mã tôi có, tôi có khoảng 20 dòng mã tương tự. Làm điều tương tự cho từng lĩnh vực tôi cần.
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)
Trên dòng nào, công cụ xóa r cờ? – Gaffi
Nó chạy trên đường khi tôi gọi nó. 'Worksheets (data_sheet) .Range (" C2 ") Giá trị = ProcessString (last_name)' – George