首页
学习
活动
专区
工具
TVP
发布

批量改变单元格部分字符格式

有朋友问:能不能批量将单元格中的部分字符改变格式,比如改变字体,字号,改变颜色……

举个例子,如下图所示,将“领导”两个字……字体变成15号,加粗且变成红色……

干了这碗毒鸡汤,天黑就闭眼……

代码如下:

Sub MyCharacters()

Dim arr, s$, i&, l&, n&

s = "领导"'需要改变格式的字符串

n = Len(s)'变量s的长度

arr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row)

For i = 1 To UBound(arr)

l = InStr(1, arr(i, 1), s, vbTextCompare)

'查找变量s在arr(i,1)中首次出现的位置,不区分字母大小写

Do While l '如果l不为0,也就是存在s的话那么……

With Cells(i, 1).Characters(l, n).Font

.Size = 15 '15号字体

.FontStyle = "加粗"

.Color = -16776961 '红色

End With

l = InStr(l + n, arr(i, 1), s, vbTextCompare)

'寻找变量s下一个出现的位置

Loop

Next

MsgBox "处理完毕!"

End Sub

小贴士:

1,代码使用了characters对象。其语法是Characters(start, length),其中 start 为起始字符号,而 length 为要返回的字符个数。

2,代码使用了instr函数查找指定字符在字符串中最先出现的位置,其语法是InStr([start],string1, string2, [compare])。

start是可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果指定了 compare 参数,则一定要有 start 参数,例如本例小代码。

string1是必要参数。接受搜索的字符串表达式。

string2是必要参数。被搜索的字符串表达式。

Compare可选参数。指定字符串比较。简单理解,如果省略则区分字母大小写,如果指定参数为vbTextCompare则忽略字母大小写。

3,坦白的说,Excel 和VBA处理这类问题的效率并不高,即便搭配正则,效率同样还是不高。处理这类问题最高效的方法是——找隔壁老王Word呀,它才是文档排版的绝对高手——

图文制作:看见星光

专业的职场技能充电站

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191218A03MU400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券