我有一个字符串数组,我希望使用xlDown在工作表的末尾插入一个新行。
我试过Range("A1:A" & UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)
但它会将其复制到列而不是最低行..
感谢您的帮助。
答案 0 :(得分:1)
您需要Resize
数组范围的大小(您需要修改Column
维度)。由于数组从0开始,而Column从1开始,我们加1,因此语法为:Range("A" & LastRow + 1).Resize(, UBound(strArr) + 1).Value
。
其次,LastRow
找到包含数据的最后一行(在A列中),因此我们+1
将结果写在下一个空行(下面一行)中。
尝试以下代码:
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row '<-- get last row in Column A
Range("A" & LastRow + 1).Resize(, UBound(strArr) + 1).Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(strArr))
答案 1 :(得分:0)
使用此功能,这将确保您获得工作表的最后一行,因为检测到的任何内容都会使该行成为最后一行。
lastrow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & lastrow).Resize(, UBound(strArr)).Value = WorksheetFunction.Transpose(strArr)
答案 2 :(得分:0)
Option Explicit
Public Sub TestMe()
Dim strArr As Variant
strArr = Array("a", "b", "c")
Range("A" & last_row + 1 & ":A" & last_row + UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)
End Sub
Public Function last_row(Optional str_sheet As String, Optional column_to_check As Long = 1) As Long
Dim shSheet As Worksheet
If str_sheet = vbNullString Then
Set shSheet = ThisWorkbook.ActiveSheet
Else
Set shSheet = ThisWorkbook.Worksheets(str_sheet)
End If
last_row = shSheet.Cells(shSheet.Rows.Count, column_to_check).End(xlUp).Row
End Function
诀窍是你应该找到最后一行,然后使用数组的大小来计算新范围的大小。 像这样:
Range("A" & last_row + 1 & ":A" & last_row + UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)