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行,所以您只看到最后一个拆分的单元格。