Excel VBA:有没有办法迭代特定范围内的字符?

时间:2018-05-31 06:55:56

标签: excel string vba iteration

是否可以迭代特定范围内的字符,例如:

...
For each char1 in range1.Characters
    [It does not work the fake code above, because Characters is not a collection]

我的意思是:有这样的收藏吗?

1 个答案:

答案 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个对象,最好使用MIDLEN函数执行此操作:

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

使用MIDLEN工作表函数,也可以在没有VBA的情况下完成此操作。

更多信息: