2016-08-05 23 views
0

Ich bin neu und ich habe versucht, Zelleninhalte in eine Spalte zu verschieben. Ich fand einen Code online und es funktionierte gut, aber wenn das Blatt mehr als 1000 Inhalte hat, bekommt es einen "Fehler 2029". Kann mir jemand helfen zu verstehen, warum das passiert?Verschieben Sie Zelleninhalte in eine Spalte

Der Code ist unten:

Sub MakeOneColumn() 

    Dim vaCells As Variant 
    Dim vOutput() As Variant 
    Dim i As Long, j As Long 
    Dim lRow As Long 

    If TypeName(Selection) = "Range" Then 
     If Selection.Count > 1 Then 
      If Selection.Count <= Selection.Parent.Rows.Count Then 
       vaCells = Selection.Value 

       ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1) 

       For j = LBound(vaCells, 2) To UBound(vaCells, 2) 
        For i = LBound(vaCells, 1) To UBound(vaCells, 1) 
         If Len(vaCells(i, j)) > 0 Then 
          lRow = lRow + 1 
          vOutput(lRow, 1) = vaCells(i, j) 
         End If 
        Next i 
       Next j 

       Selection.ClearContents 
       Selection.Cells(1).Resize(lRow).Value = vOutput 
      End If 
     End If 
    End If 

End Sub 

es in meiner Personal.xlsb-Datei gespeichert ist und über Makros ausgeführt wird. Als ich Zeile für Zeile in VBA-Projekt laufen, es gibt mir einen Fehler in

If Len(vaCells(i, j)) > 0 Then

Mismatch Fehler anzeigt.

Hier ist der Link der Testdatei.

https://drive.google.com/open?id=0BwfUfQfWNeG5VVpIOFItcmdCSWs

+0

Gibt es irgendwelche Fehlerwerte in der ausgewählten Zellen? –

+0

Wenn es Fehler, was ist der Wert an dieser Position auf dem Array "vaCells"? –

+0

Ich kann den genauen Ort des Fehlers nicht genau bestimmen, da der Inhalt auf dem Blatt ziemlich viel ist. Aber auf dem Code selbst zeigt es vaCells (i, j) = Fehler 2029 – Marco

Antwort

0

Ihr Code funktioniert auf meinem Rechner in Ordnung. Es tritt kein Fehler auf, selbst wenn die Spalte mehr als 1.000 Inhalte enthält. Ich nehme an, dass Sie den Namen Ihres Auswahlbereichs nicht korrekt geändert haben und den ausgewählten Bereich "Bereich" nicht ausgewählt haben, als der Code ausgeführt wurde. Um den Bezug eines neuen ausgewählten Bereichs zu ändern, können Sie es in Menü FormelName Manager in Excel bearbeiten 2010.

+0

Ich bin mir nicht sicher, ob ich Anastasiya verstehe. Ich habe den Code in meiner PERSONAL.xlsb-Datei gespeichert und führen Sie es einfach mit dem Macro-Programm aus. Mache ich etwas falsch? – Marco

+0

@Marco Ich nahm an, dass Sie die Daten jedes Mal hinzufügen, wenn Sie den Code ausführen. Aber Sie haben vergessen, den neuen Bereich Ihrer Daten in "Range" zu ändern. Ändern Sie den Referenzbereich von "Range", um sie an Ihre neuen Daten anzupassen. Wählen Sie danach "Range" und führen Sie Ihren Code aus. Kannst du die Version deines Excel irgendwie sagen? –

+0

Es tut mir leid, wenn ich in der Aufnahme etwas langsam bin, aber die Daten sind tatsächlich so wie sie sind. Ich füge nichts neues zu jedem Mal hinzu, wenn ich den Code ausführe. Wenn meine Inhalte weniger als tausend sind, funktioniert es gut, aber wenn Sie dies auf einem Blatt mit mehr als 1000 Inhalten ausführen, beginnt es zu agieren. Ich benutze Excel 2016. – Marco