2016-06-27 12 views
0

Der folgende Code führt aus und teilt die ursprüngliche Zelle in ein neues Array, aber ich kann nicht das neue String-Array auf ein neues Blatt verschieben. Die Zeile, die einen Fehler auslöst, ist varHorizArray (1, intCol) .Select. Wie kann dieser Code geändert werden, um das Array direkt auf ein neues Blatt zu verschieben? Ich möchte nach Wörtern im neuen Array suchen.String-Array zu neuem Blatt

Sub SplitWithFormat() 
 
    Dim R As Range, C As Range 
 
    Dim i As Long, V As Variant 
 
    Dim varHorizArray As Variant 
 
    Dim rge As Range 
 
    Dim intCol As Integer 
 
      
 
    
 
Set R = Range("d1", Cells(Rows.Count, "d").End(xlUp)) 
 
For Each C In R 
 
    With C 
 
     .TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _ 
 
     consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ 
 
     Space:=True, other:=True, Otherchar:=vbLf 
 

 
     Set rge = Selection 
 
     varHorizArray = rge 
 
     .Copy 
 
     Range(.Offset(0, 1), Cells(.Row, Columns.Count).End(xlToLeft)).PasteSpecial xlPasteFormats 
 
    End With 
 
Next C 
 

 
Application.CutCopyMode = False 
 

 

 
For intCol = LBound(varHorizArray, 2) To UBound(varHorizArray, 2) 
 
     Debug.Print varHorizArray(1, intCol) 
 
    Next intCol 
 
    
 
Sheets("Sheet1").Activate 
 
varHorizArray(1, intCol).Select 
 
ActiveSheet.Paste 
 

 
End Sub 
 
​

+2

Sie können nicht 'select' ein Array ... – findwindow

+0

Ah, wie @jeeped sagen mag, [key Lösungen drehen] (http://stackoverflow.com/questions/37972255/arrays-in- excel-change-format-of-string) führt nur zu solchen Fragen. – findwindow

+0

Ich brauche nur diesen letzten Teil. Wie kann die .TextToColumns-Funktion von Offset zu einem neuen Blatt geändert werden? – johndoe253

Antwort

1

Um direkt ein Array zu einem Arbeitsblatt-Dump, nur einen Bereich mit einer ähnlichen Dimension zu Ihrem Array gesetzt und in diesem Bereich die Array zuweisen.

Sheet1.Activate 
Sheet1.Range(Cells(1, LBound(varHorizArray, 2)), Cells(UBound(varHorizArray), UBound(varHorizArray, 2))) = varHorizArray 
+0

Wenn ich diese Zeile platziert habe, bekam ich einen Laufzeitfehler 1004. Methode 'Bereich' des Objekts '_Worksheet' fehlgeschlagen – johndoe253

+0

könnte irgendwas sein, haben Sie den Blattnamen in Blattname von Sheet1 geändert. Sind Sie Array multidimensional? – cyboashu

+0

Ich habe es als Verweis auf Blatt1, weil meine Daten auf Blatt2 und das Array ist ein paar Stränge lang und es ist 1 dimensional – johndoe253

Verwandte Themen