2012-03-26 1 views
1

궁극적으로 텍스트 파일에 범위를 쓰려고합니다. 범위의 값을 얻으면 2 차원 변형 배열을 반환합니다. 그러나 변환 함수에 전달하려고하면 형식 불일치 오류가 발생합니다.변형 배열을 구분 된 문자열로 변환하려고 시도 할 때 항상 형식이 일치하지 않습니다.

코드는 다음과 같습니다

Dim Data As String 
Set ts = fso.CreateTextFile("testfile.txt", True) 
Data = ArrayToDelimitedString(wksMyWorkSheet.Range("rngMyRange").Value) 
ts.Write (Data) 
ts.Close 

Public Function ArrayToDelimitedString(variantArray() As Variant) As String 
    Dim delimitedString As String, index As Integer 

    For index = 1 To UBound(variantArray(1)) 
     delimitedString = delimitedString & CStr(variantArray(1, index)) & "," 
    Next 
    ArrayToDelimitedString = Left(delimitedString, Len(delimitedString) - 1) 
End Function 

.Value는 2 차원 배열을 반환하는 이유가 궁금하네요 그리고 왜 나에게이 불일치 오류를주고있다.

+0

wksMyWorkSheet.Range ("rngMyRange"). 값 는 3D 어레이 (변형 객체를 포함하는 변형)을 반환합니다. 어떤 종류의 범위를 사용하고 있습니까? 행? 칼럼? 지역? –

+0

범위가 한 행입니다. 3D 배열입니까? 코드를 단계별로 살펴보면 현지인은 Variant/Variant (1 : 1, 1 : 7)임을 알 수 있습니다. 죄송합니다. VBA를 한 달 동안 사용해 왔으므로 너무 익숙하지 않습니다. – rcell

+0

음, Range 메서드는 항상 3D Array를 반환합니다. 3D 배열로 Transpose 메서드를 사용하려고하면 요소 행렬이 바뀝니다 (필요한 요소가 아닙니다). 그러나 단일 행이나 열의 경우 데이터 유형을 변형/변형 (1에서 1, 1에서 7)에서 변형/문자열로 변경합니다. –

답변

2

Range() 메서드는 Variant의 Variant를 반환합니다. 2D 배열 (변형 문자열)을 사용하려는 경우 Transpose 메서드를 사용하십시오.

ArrayToDelimitedString(wApplication.WorksheetFunction.Transpose(wksMyWorkSheet.Range("rngMyRange").Value)) 
관련 문제