Попытка преобразовать вариантный массив в строку с разделителями и всегда получать несоответствие типов - PullRequest
1 голос
/ 27 марта 2012

В конечном итоге я пытаюсь записать диапазон в текстовый файл. Когда я получаю значение диапазона, он возвращает 2d вариантный массив. Однако, если я пытаюсь передать его в функцию преобразования, это вызывает ошибку несоответствия типов.

Код:

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 возвращает 2d массив и почему он дает мне эту ошибку несоответствия.

1 Ответ

2 голосов
/ 27 марта 2012

Метод Range () возвращает вариант Variant.Если вы хотите использовать 2D Array (Variant of Strings), используйте метод Transpose.

ArrayToDelimitedString(wApplication.WorksheetFunction.Transpose(wksMyWorkSheet.Range("rngMyRange").Value))
...