2016-07-22 7 views
0

Ich versuche, eine Zelle zu erhalten, die basierend auf den von einer Formel zurückgegebenen Werten aufgeteilt wird. Es lässt mich kein Foto hochladen, also werde ich mein Bestes geben, um es zu erklären. So teilen Sie mehr als die aktive Zelle

Das folgende ist mein Code, um die Zelle zu teilen:

Sub splitText() 
Dim splitVals As Variant, totalVals As Long, I As Integer 
splitVals = Split(ActiveCell.Value, " ") 
totalVals = UBound(splitVals) 
range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row,ActiveCell.Column + 1 + totalVals)).Value = splitVals 
End Sub 

Ich frage mich, ob es eine Möglichkeit, mein Programm gesetzt zu bekommen, ist so, dass es alle Zellen in der Spalte D aufgeteilt wird, statt nur die aktive Zelle.

+0

[this] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) könnte Ihnen helfen – litelite

+1

Schauen Sie in "For Loops Vba" oder " Do Loops vba "oder" Schleife durch Zeilen vba ". Google wird eine Menge Beispiele haben. –

Antwort

0

Hier versuchen Sie dies:

Sub splitText() 

    Dim r As Range 
    Dim splitVals As Variant, totalVals As Long, I As Integer 

    For Each r In Range("D:D").Cells 
     If r.Value <> "" Then 
      splitVals = Split(r.Value, " ") 
      totalVals = UBound(splitVals) 
      Range(Cells(r.Row, r.Column + 1), Cells(r.Row, r.Column + 1 + totalVals)).Value = splitVals 
     End If 
    Next r 


    End Sub 
+0

Vielen Dank! Das macht total Sinn, aber jetzt gibt es nichts zurück ... Ich weiß nicht, ob es einen Unterschied macht oder nicht, aber die Daten in meinen D-Zellen sind vierstellige Zahlen, die durch Leerzeichen getrennt sind. – kmja2500

0
Sub splitText() 
    Dim splitVals As Variant, totalVals As Long 
    Dim N as single 
    splitVals = Split(ActiveCell.Value, " ") 
    totalVals = UBound(splitVals) 
    For N = 0 to totalVals 
     ActiveCell.offset(0, 1 + N) = splitVals(N) 
     ActiveCell.offset(1, 0).select 
    Next N 
End Sub 

Dieser Unter nur Text für eine einzelne Zelle zu teilen ist, die Ihre aktive Zelle ist. Wenn Sie für mehrere Zellen aufteilen müssen, dann müssen Sie diese Funktion für jede Zelle Schleife.

+0

ok danke! Das macht Sinn ... aber es spaltet immer noch nur die aktive Zelle. Ich habe versucht, diesen Code zu ändern, um es zu bekommen, um die Zellen Spalte D ab Zeile 5 zu teilen, aber ich kann nicht scheinen, es zu bekommen. – kmja2500

+0

Ja, nur für activecell, da wir ActiveCell verwenden, fügen Sie neuen Code hinzu, um die aktive Zelle in die nächste Zeile zu verschieben –

+0

aber meine Empfehlung verwendet Cells(), stattdessen ActiveCell, weitermachen –

Verwandte Themen