我没有收到以下代码的输出:
Sub spliter()
Dim text As String
Dim a As Integer
Dim name As Variant
Do Until IsEmpty(ActiveCell)
text = ActiveCell.Value
name = Split(text, " ")
For a = 0 To UBound(name)
Cells(1, a + 1).Value = name(a)
Next a
ActiveCell.Offset(1, 0).Select
Loop
End Sub
使用'run to'调试器,我可以看到循环工作正常。这最初是作为分离器子构建的,其中Loop函数被置于其中。分离器子工作正常,1个单元并且单独使用,但是当我合并Loop时,分离器功能什么都不提供。我认为这可能是数组问题中的一个数组。
答案 0 :(得分:1)
这可以解决你的问题:
Sub spliter()
Dim vText As String, _
vName() As String, _
wRow As Integer
wRow = 1
If IsEmpty(ActiveCell) Or ActiveCell.Value2 = vbNullString Then
MsgBox "ActiveCell is empty!", vbCritical + vbOKOnly
Else
Do Until IsEmpty(ActiveCell) Or ActiveCell.Value2 = vbNullString
vText = ActiveCell.Value
vName = Split(vText, " ")
For a = LBound(vName) To UBound(vName)
Cells(wRow, a + 1).Value = vName(a)
Next a
ActiveCell.Offset(1, 0).Activate
wRow = wRow + 1
Loop
End If
End Sub
答案 1 :(得分:1)
我不确定您要将数据放在何处 - 您可以从ActiveCell获取数据,该数据可能位于工作表的任何位置,并将其粘贴到同一工作表的第1行。
此代码将获取ActiveCell及其下方的单元格,并按空格分割文本字符串,并将每个单词放在原始句子旁边。
Sub Splitter()
Dim sText As String
Dim x As Integer
Dim vName As Variant
Do Until IsEmpty(ActiveCell)
sText = ActiveCell.Value
vName = Split(sText, " ")
ActiveCell.Offset(, 1).Resize(, UBound(vName) + 1) = vName
ActiveCell.Offset(1, 0).Select
Loop
End Sub