excel - Excel中的自动部分文本着色(不是单元格)
问题描述
我是 excel 和 VBA 的新手,所以我来这里寻求您的帮助。
我正在寻找一个 VBA 代码来自动为每个列单元格的第一个字母着色。
这仅适用于 A 列,而不是 excel 中的所有列。列中只有单词。
例如,如果第一个字母是“a”,那么只有“a”会变成红色。
没有区分大小写的限制,每个 az 将被着色为 26 种可区分的颜色。
我尝试了几天来找到解决方案,但不幸的是我做不到。
示范:
提前致谢。
解决方案
(至少)有几种方法可以做到这一点。下面的第一个选项为您选择颜色 - 您没有选择,但代码要短得多。第二个选项将要求您对每个字母所需的实际颜色进行硬编码——为了演示,我只写了 C。
在这两种情况下,您都将代码粘贴到相应工作表的工作表模块区域。让我知道你的情况如何。我采用这种方法是因为您说您希望它“自动”发生
选项一——更短但没有颜色选择
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo GetOut
Application.EnableEvents = False
Dim myFont As Integer, aCell As Range
For Each aCell In Target.Cells
myFont = Asc(UCase(Left(aCell, 1))) - 62
aCell.Characters(Start:=1, Length:=1).Font.ColorIndex = myFont
Next
Continue:
Application.EnableEvents = True
Exit Sub
GetOut:
MsgBox Err.Description
Resume Continue
End Sub
选项二——你选择你想要的颜色,但必须添加
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo GetOut
Application.EnableEvents = False
Dim myLetter As String, aCell As Range
For Each aCell In Target.Cells
myLetter = UCase(Left(aCell, 1))
Select Case myLetter
Case Is = "A"
aCell.Characters(Start:=1, Length:=1).Font.ColorIndex = 3 `<~~ change to your taste
Case Is = "B"
aCell.Characters(Start:=1, Length:=1).Font.ColorIndex = 4
Case Is = "C"
aCell.Characters(Start:=1, Length:=1).Font.ColorIndex = 5
'*** etc etc etc Add the rest of the alphabet***
End Select
Next
Continue:
Application.EnableEvents = True
Exit Sub
GetOut:
MsgBox Err.Description
Resume Continue
End Sub
推荐阅读
- memory-management - EL2中读/写内存的问题
- php - 还有其他方法可以提交我动态添加的输入字段吗?
- android - Appium按下回调按钮使应用程序在android上崩溃
- apache-royale - ReferenceError:未定义 BlobPropertyBag
- java - 错误 helidon se 项目中不存在指定的文件“helidon-quickstart-se.jar”
- python - 创建一个数据框并使用 pandas 中的 for 循环填充相同的数据框
- c++ - (C++) 为什么我不能依靠提取运算符来充当迭代器?
- python-3.x - Python 从 REST API 并行获取分页数据
- javascript - 我无法在 VueJs 中获取用户的 IP 地址
- android - ConstraintLayout:带有“弹簧”的椭圆形文本?