2017-03-24 2 views
1

Excel 2010 용 VBA에 매크로를 작성하고 있습니다. 이해하는 데 기본적인 것이없는 것 같습니다. 문자열 배열을 채우고 해당 배열의 내용을 반복합니다. 배열의 텍스트는 HTML 형식의 전자 메일 메시지에서 가져온 것으로, 큰 줄 바꿈하지 않는 공백이 있습니다. 내 출력에만 텍스트가 포함되도록 이러한 문자 및 기타 인쇄되지 않는 문자를 제거하고 싶습니다.VBA 함수 반환 문자열 형식 불일치 오류

For Each str In stringArr() 
     CleanString (str) 
     If Len(str) <> 0 Then 
      Cells(Row + 1, 6 + index) = str 
      index = index + 1 
     End If    
    Next str 

CleanString()은 반환 형식으로 문자열을 반환하지만 str은 변경되지 않습니다. 나는 시도했다 : 형식 불일치 오류를 제공

testString = cleanString(str)

합니다. 어떤 제안?

더 많은 정보를 원하시면 ... 도움을

Function cleanString(sInput As String) As String 
    Dim sResult As String 
    sResult = sInput 
    sResult = Replace(sResult, Chr(10), "") 
    sResult = Replace(sResult, Chr(13), "") 
    sResult = Replace(sResult, Chr(9), "") 
    sResult = Replace(sResult, ChrW(160), "") 
    sResult = Replace(sResult, Chr(32), "") 
    Trim$ (sResult) 
    Application.WorksheetFunction.Clean (sInput) 
    cleanString = sResult 
    Exit Function 

End Function 
+0

덕분에 당신은'CleanString'의 정의를 보여줄 수 = STR : 은 (변형 등) cleanString로 변경, 내가 수 있음을 의미? – bernie

+0

님이 질문에 대한 추가 정보를 수정했습니다. –

+2

배열에 String 형식이 없을 수 있습니다. ByVal로 cleanString 인수를 지정하면 sInput As String VBA는 문자열 유형 배열을 문자열로 강제 변환합니다. CleanString (str)은 ByVal 인수를 전달합니다. 즉, str = cleanString (str)과 같이 호출 프로 시저의 변수에 반환 값을 할당해야하지만 str As String을 선언해야합니다. End Function 전에 Exit 기능이 필요하지 않습니다. – Variatus

답변

3

감사합니다. cleanString()에 문자열이 필요하다는 지정 문제가있었습니다.

이 cleanString (STR) Variatus