2016-07-22 7 views
0

私は数式から返された値に基づいてセルを分割しようとしています。 私は写真をアップロードすることはできませんので、私は説明できるように最善を尽くします。アクティブセルよりも分割する方法

次のセルを分割するために私のコードです:

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 

私はそれが列D内のすべてのセルを分割するように、私のプログラムのセットを取得する方法があるかどうか迷って、代わりにちょうどいますアクティブセル。

ここ
+0

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

+1

"For Loops vba"または " Do Loops vba "または" Loop through rows vba "を選択します。 Googleには数多くの例がある。 –

答えて

0

、これを試してみてください。

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

ありがとうございます!これはまったく意味がありますが、現在は何も返されていません...違いがあるかどうかはわかりませんが、Dセルのデータは4桁の数字が空白で区切られています。 – 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 

このサブは、あなたのアクティブセルである単一セルのためのテキストを分割するだけです。 複数のセルを分割する必要がある場合は、セルごとにこの機能をループする必要があります。

+0

ありがとう!それは理にかなっています...しかし、それはまだアクティブセルを分けるだけです。私は行5で列Dの下にセルを分割するために、このコードを変更しようとしましたが、それを得るように見えません。 – kmja2500

+0

アクティブセルのみを使用しているため、アクティブセルのみを使用しているため、アクティブセルを次の行に移動するための新しいコードを追加します( –

+0

)。しかし、私の推薦では、ActiveCellを使用し、 –

関連する問題