Vba 在循环中使用拆分函数不起作用

Vba 在循环中使用拆分函数不起作用,vba,excel,Vba,Excel,我没有收到来自以下代码的任何输出: 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

我没有收到来自以下代码的任何输出:

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

使用“运行到”调试器,我可以看到循环工作正常。这最初是作为一个拆分器子模块构建的,其中包含循环函数。splittersub可以很好地处理1个单元,而且它本身也可以,但是当我合并了这个循环时,splitter函数什么都不提供。我认为这可能是阵列问题中的一个阵列。

这应该可以解决您的问题:

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

我不确定您要将数据放在哪里-您从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

要激活单元格,请使用
.activate
而不是
ActiveCell.Offset(1,0)。选择
,通常我会这样声明我的拆分结果:
Dim name()作为字符串
谢谢@R3uK的回答,但不幸的是它仍然不起作用。使用调试器,我可以看到Do-Untill和before循环未运行后的代码。你认为这是循环的错误使用吗?不,我检查循环是否正常工作,但如果活动单元格为空,你将无法输入循环!因此,启动程序时要小心!我更新了代码,因为每个拆分的单元格都写在第1行,所以您只看到最后一个拆分的单元格。