将字符串数组转换为新行

时间:2017-01-26 12:27:02

标签: excel vba excel-vba

我有一个字符串数组,我希望使用xlDown在工作表的末尾插入一个新行。

我试过Range("A1:A" & UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)

但它会将其复制到列而不是最低行..

感谢您的帮助。

3 个答案:

答案 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)