我想让公式数组函数更容易
我写了一些代码,但它没有像我预期的那样插入我的副本范围:
Sub copy_link()
Dim copyrange As Range
Dim pasterange As Range
Set copyrange = Application.InputBox(prompt:="Choose the copy area", Type:=8)
Set pasterange = Application.InputBox(prompt:="Choose the paste area", Type:=8)
pasterange.FormulaArray = "=TRANSPOSE(copyrange)"
End Sub
答案 0 :(得分:1)
试试这个:
pasterange.FormulaArray = "=TRANSPOSE(" & copyrange.Address & ")"
您的方法只是在Excel中的公式中插入“copyrange”一词,这对Excel来说完全没有意义。它只在VBA中有意义,所以你必须让VBA解释它。这就是为什么它超出了引号。
您还需要检索范围的地址,而不是其值,因此.Address
部分。
修改强>
Sub copy_link()
Dim copyrange As Range
Dim pasterange As Range
Dim RowNum As Long
Dim ColNum As Long
Set copyrange = Application.InputBox(prompt:="Choose the copy area", Type:=8)
Set pasterange = Application.InputBox(prompt:="Choose the paste area", Type:=8)
RowNum = copyrange.Rows.Count
ColNum = copyrange.Columns.Count
pasterange.Cells(1).Resize(ColNum, RowNum).FormulaArray = "=TRANSPOSE(" & copyrange.Address & ")"
End Sub
Cells(1)
确保我们从pasterange
左上角的单元格开始“创建”输出范围。 .resize(ColNum, RowNum)
将其调整为copyrange
的转置变体。
也许更容易理解(但同样,更详细):
.Resize(RowSize:=ColNum,ColumnSize:=RowNum)