是否可以迭代特定范围内的字符,例如:
...
For each char1 in range1.Characters
[It does not work the fake code above, because Characters is not a collection]
我的意思是:有这样的收藏吗?
答案 0 :(得分:5)
如果要循环迭代包含文本的单个单元格Range
对象,返回单个 - Characters
个对象,这是一种方式:
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
使用MID
和LEN
工作表函数,也可以在没有VBA的情况下完成此操作。