实例需求:Excel单元格中的字符可以设置不同的字体格式(大小、颜色等),有时需要将这些信息保存起来,以便于后续代码的处理(例如替换后恢复原字体颜色,或者统计某种指定格式字符个数等等),此时使用自定义数据结构就可以高效的完成这个任务。
示例代码如下。
Type CharColor
aChars() As String
aColors() As Long
End Type
Sub Demo()
Dim i As Long, iLen As Long, j As Long
Dim aCell(1 To 2) As CharColor
For i = 1 To 2
iLen = Len(Range("A" & i).Value)
ReDim aCell(i).aChars(1 To iLen)
ReDim aCell(i).aColors(1 To iLen)
For j = 1 To iLen
With Range("A" & i).Characters(j, 1)
aCell(i).aChars(j) = .Text
aCell(i).aColors(j) = .Font.Color
End With
Next
Next
Debug.Print "A1第1个字符是:" & aCell(1).aChars(1) & " 颜色:" & aCell(1).aColors(1)
Debug.Print "A2第4个字符是:" & aCell(2).aChars(4) & " 颜色:" & aCell(2).aColors(4)
End Sub
【代码解析】
第1~4行代码为用户自定义数据结果,包括两个数组,aChars()
用于保存字符,aColors()
用于保存字体颜色。
第7行代码定义一个数组(包含两个元素),其类型为CharColor
。
第8~18行代码循环变量A列数据,如果需要大家可以自行修改为动态获取数据范围。
第9行代码获取单元格字符个数。
第10~11行代码根据字符个数,重新分配数组存储空间。
第12行代码循环变量每个字符及其属性。
第14行代码将字符保存在数组中。
第15行代码将字符的字体颜色保存在数组中。
第19~20行代码在立即窗口中输出内容,如下所示。