Как предотвратить Application.WorksheetFunction.Transpose от простого вставки первого значения в массив
Так что я выполняю относительно простую задачу в vba, но почесываю голову над результатом. Я пишу массив заголовков coumn, а затем пытаюсь вставить их через функцию Application.WorksheetFunction.Transpose, но мне не повезло... он просто вставляет первое значение в массив длины диапазона.
Вот мой код:
<i> sub test
Dim myHeadings() As Variant
Dim header_rng As Range
myHeadings = Array("a", "b" , "C", "D")
'Set header_rng = Range(Cells(10, 2), Cells(10, UBound(myHeadings)))
Dim name As String
Dim name_Array As String
name = TixCollection(1).ADR
Call PrintArray(10, 2, myHeadings, name)
End sub
Sub PrintArray(RowPrint, ColPrint, ArrayName, WorkSheetName)
'Dim element As Variant
'For Each element In ArrayName
'Debug.Print element
'Next element
Sheets(WorkSheetName).Range(Cells(RowPrint, ColPrint), _
Cells(RowPrint, UBound(ArrayName))) = _
WorksheetFunction.Transpose(ArrayName)
End Sub
Что не так с этим?
1 ответ
Как упоминалось в комментариях, массив не нужно транспонировать, если вы хотите, чтобы заголовки были размещены в одной строке для столбцов различий. Однако вам нужно добавить количество столбцов в начальный столбец (2 в вашем случае). Вот код, который я получил для работы ниже.
Sub PasteHeadersToSheet()
Dim myHeadings() As Variant
myHeadings = Array("a", "b", "C", "D")
' set sheet name
sheetName = "sheet1"
' set starting row
startRow = 10
' set starting row
startColumn = 2
Call PrintArray(startRow, startColumn, myHeadings, sheetName)
End Sub
Sub PrintArray(RowPrint, ColPrint, ArrayName, WorkSheetName)
' set worksheet
Set ws = Sheets(WorkSheetName)
' set starting cell
Set cellStart = Cells(RowPrint, ColPrint)
' set ending cell
Set cellEnd = Cells(RowPrint, UBound(ArrayName) + ColPrint)
' paste array to selected worksheet and range of cells
ws.Range(cellStart, cellEnd) = ArrayName
End Sub