2017-01-26 4 views
-1

Ich habe ein String-Array, das ich am Ende des Blattes mit xlDown als neue Zeile einfügen möchte.Konvertiere ein String-Array in eine neue Zeile

Iv'e versucht Range("A1:A" & UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)

Aber es Kopien, die auf eine Spalte und nicht auf der untersten Reihe ..

Danke für die Hilfe.

Antwort

1

Sie müssen den Bereich der Größe des Arrays Resize (Sie müssen die Column Dimension ändern). Da das Array bei 0 beginnt und die Spalte bei 1 beginnt, fügen wir 1 hinzu, also lautet die Syntax: Range("A" & LastRow + 1).Resize(, UBound(strArr) + 1).Value.

Zweitens, LastRow findet die letzte Zeile mit Daten (in Spalte A), so dass wir +1 das Ergebnis auf die nächste leere Zeile schreiben (1 Zeile unten).

den Code unten Versuchen:

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)) 
+0

תודה רבה שי !, עובד מעולה –

+0

@YuvalSegev חחח, בבקשה –

0

Damit wird sichergestellt, dass Sie die letzte Zeile des Blattes erhalten, da alles, was erkannt wird, die letzte Zeile ergibt.

lastrow = Cells(Rows.Count, 1).End(xlUp).Row + 1 

Range("A" & lastrow).Resize(, UBound(strArr)).Value = WorksheetFunction.Transpose(strArr) 
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 

Der Trick ist, dass Sie die letzte Zeile finden sollen und dann die Größe des Arrays verwenden, um die Größe des neuen Bereichs zu berechnen. So:

Range("A" & last_row + 1 & ":A" & last_row + UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)