我有一个Excel文件,可用于工作中的工作人员列表。在某些单元格中,我们具有用于计时目的的字母/数字信息。即CLAAO10I-可以按任意顺序使用或完全不使用0、1,I和O(可以全是字母或所有数字字符)。
在以下单元格中,我将使用哪种VBA代码将字母I和O自动更改为红色:F6,F11,F16,F21,L6,L11,L16,L21,R6,R11和R21,以提供帮助区分数字0和1以及字母I和O?
答案 0 :(得分:0)
您可以使用Range.Characters(start, length)
访问单元格中的特定字符,并使用Range.Characters(start, length).Font.Color
着色特定字符。
因此,您将需要一个循环来遍历给定范围内的所有单元格。然后循环遍历每个单元格中的所有字符,并根据需要为其着色。
Option Explicit
Public Sub ColorizeLetters()
Dim iChar As Long
Dim Cel As Range
For Each Cel In Worksheets("YourSheet").Range("F6,F11,F16,F21,L6,L11,L16,L21,R6,R11,R21")
For iChar = 1 To Cel.Characters.Count
Select Case Cel.Characters(iChar, 1).Text
Case "O", "I"
Cel.Characters(iChar, 1).Font.Color = vbRed
Case "1", "0"
Cel.Characters(iChar, 1).Font.Color = vbGreen
End Select
Next iChar
Next Cel
End Sub
请注意,这仅适用于常数单元格,并且如果单元格包含公式,则无法为特定字符着色。
答案 1 :(得分:0)
这可以做到:
Sub makeRedSubstrings()
Dim i As Long
Dim cll As Range, rng As Range
Application.ScreenUpdating = False
' change sheet below as required
Set rng = Sheets("Sheet1").Range("F6,F11, F16, F21, L6, L11, L16, L21, R6, R11, R21")
For Each cll In rng
For i = 1 To Len(cll)
If Mid(cll, i, 1) = "I" Or Mid(cll, i, 1) = "O" Then
cll.Characters(Start:=i, Length:=1).Font.Color = RGB(255, 0, 0) 'red
End If
Next i
Next cll
Application.ScreenUpdating = True
End Sub