String 分割字符串循环
我正在尝试拆分一个字符串并创建一个循环以遍历列中的单元格。有几个挑战:String 分割字符串循环,string,vba,excel,split,String,Vba,Excel,Split,我正在尝试拆分一个字符串并创建一个循环以遍历列中的单元格。有几个挑战: 拆分仅适用于ActiveCell 循环遍历所有单元格,直到最后一行,但填充所有单元格 仅使用ActiveCell中的拆分字符串值 数组的拆分从i=0开始,即使有选项Base 1 在模块的开头 如何更改目的地的位置(例如,代替 拆分现有数据旁边的字符串,是否有管理选项 列号) 多谢各位 Option Explicit Option Base 1 Sub SplitStringLoop() Dim txt As St
ActiveCell
ActiveCell
中的拆分字符串值i=0开始,即使有选项Base 1
在模块的开头
Option Explicit
Option Base 1
Sub SplitStringLoop()
Dim txt As String
Dim i As Integer
Dim y As Integer
Dim FullName As Variant
Dim LastRow As Single
ReDim FullName(3)
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
txt = ActiveCell.Value
FullName = Split(txt, "-")
For y = 2 To LastRow
For i = 1 To UBound(FullName)
Cells(y, i + 1).Value = FullName(i)
Next i
Next y
End Sub
解决您列出的问题
Split
作用于传递给它的字符串。您正在将活动单元格值传递给它FullName
)的结果。那么你还期待什么呢Split
返回一个基于零的一维数组。就在《帮助》里写着Option Base 1
指定默认下限,适用于在Dim
语句中未指定的情况单元格(y,i+1)
中指定列(本例中为i+1
)。如果要在其他位置使用,请指定其他列Chris Nelisen概述了原因,我在他发布之前就已经编写了这段代码,所以我还是会发布它
Option Explicit
Sub SplitStringLoop()
Dim txt As String
Dim i As Integer
Dim y As Integer
Dim FullName As Variant
Dim LastRow As Single
ReDim FullName(3)
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For y = 2 To LastRow
Cells(y, 1).Select
txt = ActiveCell.Value
FullName = Split(txt, "-")
For i = 0 To UBound(FullName)
Cells(y, i + 2).Value = FullName(i)
Next i
Next
End Sub
谢谢你,克里斯,你明确的评论。我是VBA新手,我真的很欣赏不仅仅是一个代码,而是一个详细的解释。无论如何,我仍然在努力进行适当的更改。1.当我用Range(txt=Range(Cells(2,1),Cells(LastRow,1)).Value)替换ActiveCell时,它会给我一个类型不匹配错误。这可能是因为文本作为字符串。如果我将Dim txt更改为范围,我会出现一个错误“对象变量或块变量未设置。我认为字符串是正确的数据类型,因为我必须拆分文本而不是范围。请帮助我。嗨,克里斯,谢谢你调整代码和详细解释!!!案例已结束。祝你度过愉快的一天!!!