Excel VBA:有没有一种方法可以遍历特定范围内的字符?
是否有一种方法可以遍历特定范围内的字符,如:Excel VBA:有没有一种方法可以遍历特定范围内的字符?,excel,string,vba,iteration,Excel,String,Vba,Iteration,是否有一种方法可以遍历特定范围内的字符,如: ... For each char1 in range1.Characters [It does not work the fake code above, because Characters is not a collection] 我的意思是:是否存在这样的集合?如果要循环遍历包含文本的单单元格范围对象,返回单字符对象,这是一种方法: Sub IterateCharactersObject() Dim ch As Charac
...
For each char1 in range1.Characters
[It does not work the fake code above, because Characters is not a collection]
我的意思是:是否存在这样的集合?如果要循环遍历包含文本的单单元格范围对象,返回单字符对象,这是一种方法:
Sub IterateCharactersObject()
Dim ch As Characters, n As Long
With Sheets("Sheet1").Range("A1")
For n = 1 To .Characters.Count
Set ch = .Characters(n, 1)
'print position#, character, font name & size to immediate window
Debug.Print "#" & n & "=" & ch.Text, ch.Font.Name, ch.Font.Size
Next n
End With
End Sub
只有在需要更改对象的某些文本而不影响其他文本时,才需要Characters方法。如果对象不支持富文本,则无法使用Characters方法格式化部分文本。要同时更改所有文本,通常可以将适当的方法或属性直接应用于对象
…或者,如果您实际上不需要返回Characters对象,则最好使用MID和LEN函数:
Sub IterateCharacters_String()
Dim n As Long
With Sheets("Sheet1").Range("A1")
For n = 1 To Len(.Value)
'print position# and character to immediate window
Debug.Print "#" & n & "=" & Mid(.Value, n, 1)
Next n
End With
End Sub
这也可以在不使用VBA的情况下使用MID和LEN工作表函数来完成
更多信息:
MSDN:
MSDN:
MSDN:
MSDN:
如果要循环遍历包含文本的单单元格范围对象,返回单字符对象,这是一种方法:
Sub IterateCharactersObject()
Dim ch As Characters, n As Long
With Sheets("Sheet1").Range("A1")
For n = 1 To .Characters.Count
Set ch = .Characters(n, 1)
'print position#, character, font name & size to immediate window
Debug.Print "#" & n & "=" & ch.Text, ch.Font.Name, ch.Font.Size
Next n
End With
End Sub
只有在需要更改对象的某些文本而不影响其他文本时,才需要Characters方法。如果对象不支持富文本,则无法使用Characters方法格式化部分文本。通常情况下,您可以将文本直接应用于所有对象,也可以将相应的属性直接应用于所有对象
…或者,如果您实际上不需要返回Characters对象,则最好使用MID和LEN函数:
Sub IterateCharacters_String()
Dim n As Long
With Sheets("Sheet1").Range("A1")
For n = 1 To Len(.Value)
'print position# and character to immediate window
Debug.Print "#" & n & "=" & Mid(.Value, n, 1)
Next n
End With
End Sub
这也可以在不使用VBA的情况下使用MID和LEN工作表函数来完成
更多信息:
MSDN:
MSDN:
MSDN:
MSDN:
我将引入一个变量来存储循环外的文本长度:myLen=Len.Value。由于不断地从范围内读取,如果有许多重复,则需要一段时间。在循环内部为空的情况下,在包含文本ashleedawg的单元格A1上,在1百万次迭代中,差异为0.06秒与1.16秒。显然是为了性能。值应该以类似的方式作为字符串存储在外部。@RobertoSantos-别忘了✓ 接受一个有助于解决问题的答案…你将获得+2声誉,答案作者获得+15声誉。当你达到15声誉时,你也可以▲ 向上投票任何有帮助的答案,这也会奖励作者以及您以投票形式提供的反馈,从而使整个社区受益!我将引入一个变量来存储循环外的文本长度:myLen=Len.Value。由于不断地从范围内读取,如果有许多重复,则需要一段时间。在循环内部为空的情况下,在包含文本ashleedawg的单元格A1上,在1百万次迭代中,差异为0.06秒与1.16秒。显然是为了性能。值应该以类似的方式作为字符串存储在外部。@RobertoSantos-别忘了✓ 接受一个有助于解决问题的答案…你将获得+2声誉,答案作者获得+15声誉。当你达到15声誉时,你也可以▲ 向上投票任何有帮助的答案,这也会奖励作者以及您以投票形式提供的反馈,从而使整个社区受益!