乐于分享
好东西不私藏

Excel VBA的Font对象:让你的表格字体“戏精附体”

Excel VBA的Font对象:让你的表格字体“戏精附体”

还在手动调字体?VBA表示:这届用户不行。

大家好,我是你们的老朋友,一个把Excel玩成“字体变装秀”的资深表哥。

今天咱们聊点让单元格“开口说话”的东西——Font对象。

别被“对象”两个字吓到,它不是让你相亲的那个对象,而是你随时可以“调戏”的字体管家。掌握了它,你的表格不仅能算数,还能靠“颜值”吃饭。

一、Font对象是什么?——字体的“遥控器”

简单说,Font对象就是单元格里所有字体属性的集合。就像你家里的空调遥控器,按一下调温度,按一下改风向。Font对象就是让你用VBA代码“隔空操作”字体。

你平时手动点的“加粗、倾斜、颜色、字号”,在VBA里全归Font管。

二、基础语法——别怕,就一行代码

语法简单到想哭:

Range(“A1”).Font.属性 = 值

翻译成人话:“A1单元格,你的字体,给我把某个属性改成某某值!”

举个例子,让A1单元格的字变红、加粗、字号20:

With Range(“A1”).Font

    .Bold = True      ‘ 加粗

    .Size = 20        ‘ 字号20

    .Color = RGB(255, 0, 0)  ‘ 红色

End With

看到没?一个With语句搞定,比你手动点三下鼠标还快。

三、常用属性大全——把字体玩出花

我帮你整理了一张“戏精速查表”,拿走不谢:

属性

作用

示例代码

.Bold

加粗

.Bold = True

.Italic

斜体

.Italic = True

.Size

字号

.Size = 14

.Name

字体名称

.Name = “微软雅黑”

.Color

字体颜色

.Color = vbRed

.ColorIndex

颜色索引(简单)

.ColorIndex = 3(红)

.Underline

下划线

.Underline = xlUnderlineStyleSingle

.Strikethrough

删除线

.Strikethrough = True

.Subscript

下标

.Subscript = True

小贴士:vbRed、vbBlue、vbGreen是VBA内置的颜色常量,懒人专用。想自定义就用RGB(红,绿,蓝),比如RGB(255,192,0)是土豪金。

四、实战场景——别光看,练起来

场景1:一键标红所有负数

财务小姐姐的噩梦:几十行负数,一个一个标红?

Sub 标红负数()    Dim rng As Range    For Each rng In Selection        If IsNumeric(rng.Value) And rng.Value < 0 Then            rng.Font.Color = vbRed            rng.Font.Bold = True        End If    NextEnd Sub

选中区域,按F5,负数秒变“红胖子”。

场景2:标题行自动“上妆”

每次做表都要调标题:加粗、居中、字号16、微软雅黑、深蓝色?

Sub 标题美容()    With Rows(1).Font        .Name = "微软雅黑"        .Size = 16        .Bold = True        .Color = RGB(03296)   ' 深蓝,高级感    End With    Rows(1).HorizontalAlignment = xlCenterEnd Sub

一键搞定,比女朋友化妆还快。

场景3:隔行“变脸”,告别眼瞎

看大表看串行?隔行改个浅灰色字体试试:

Sub 隔行变脸()    Dim i As Integer    For i = 1 To 100 Step 2        Rows(i).Font.Color = RGB(128128128)  ' 灰色    NextEnd Sub

阅读舒适度暴涨200%。

五、高手进阶——别眨眼,这里有骚操作

技巧1:同一个单元格里不同字体

是的,你没看错。一个单元格可以部分字加粗、部分字红色。

With Range("A1")    .Value = "Excel真香"    .Characters(15).Font.Bold = True   ' “Excel”加粗    .Characters(7, 2).Font.Color = vbRed ' “真香”变红End With

这就叫“字以类聚,人以群分”。

技巧2:动态条件格式(不用条件格式功能)

不想用自带的条件格式?自己写一个监听事件:

Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Column = 2 Then  ' 第二列        If Target.Value > 100 Then            Target.Font.Color = vbRed            Target.Font.Bold = True        Else            Target.Font.Color = vbBlack            Target.Font.Bold = False        End If    End IfEnd Sub

贴到Sheet代码区,从此B列超过100自动“红脸提醒”。

六、避坑指南——过来人的血泪史

别全选整列循环字体,会卡到你怀疑人生。用.Cells配合区域操作。

颜色用RGB别用ColorIndex,后者只有56种丑色,RGB有1600万种高级色。

字体名称用英文,比如.Name = “Microsoft YaHei”,跨电脑不崩。

字号别小于8,否则同事会拿放大镜敲你头。

写在最后

Font对象就像是Excel里的化妆师,数据是骨架,字体是衣装。

会了这些代码,你不再是那个“手动调字体调到鼠标手”的苦逼表哥,而是一键批量改格式的VBA魔术师。

下次老板说“把这个表做得好看点”,你微微一笑,打开VBA编辑器,十行代码解决问题。

然后深藏功与名,继续摸鱼。