在循环中使用分割function不起作用

我没有收到以下代码的输出:

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 

使用'运行'debugging器,我可以看到循环工作正常。 这是最初作为一个拆分子,与循环functionshell。 分离器子工作正常,1单元和本身,但是当我结合了循环,分配器function没有提供任何东西。 我认为这可能是arrays问题中的一个数组。

我不确定你想把数据放在哪里 – 你可以从ActiveCell中获取数据,这些数据可能在工作表的任何地方,并粘贴到同一工作表的第一行。

这段代码将采取ActiveCell和它下面的单元格,并按空格分隔文本string,并将每个单词放在原始语句旁边。

 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 

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

 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