42、VBA常用小代码101:批量改变单元格部分字符格式

先来一首提神的歌儿,上古洪荒时期的豪迈神曲,从字面逻辑上来说,有了这歌之后,才有了说走咱就走啊……世界那么大,我想去看看……哈哈,这首歌就是……

走四方 韩磊 - 隐藏的歌手第二季 第2期

嗯,说正事吧,又到了本周的点播时间,有个朋友问能不能批量将单元格中的部分字符改变格式,比如改变字体,字号,改变颜色……

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

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

.

解决代码如下:


Sub MyCharacters()

'ExcelHome技术论坛VBA编程学习与实践:看见星光

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则忽略字母大小写。

(0)

相关推荐

  • 规范单词句子3函数:upper,lower,proper随你挑

    今天说3个函数,都是和单词有关的.分别是upper,lower,proper. upper:将一个文本字符串中的所有小写字母转换为大写字母,不改变文本中的非字母字符.小写转大写. lower:将一个文 ...

  • 查找替换函数,substitute和replace你知道它们的区别吗?

    -01- substitute 1)函数说明 这个函数是查找替换中替换的函数版,意思是根据指定的文本,将字符串中的部分字符串以新字符串替换.函数结构如下: text:第一参数,必须有.包含有要替换字符 ...

  • 支持通配符的查找函数search和searchb的用法

    今天说一个与find函数功能差不多的函数,就是search函数.它可以返回一个指定字符或者文本字符串在另一个字符串第一次出现的位置.虽然它和find有相似的功能,但还是有一些区别的.下面会详细说明. ...

  • VBA常用小代码:批量将工作表转为独立工作簿

    有时,我们需要将一个工作簿里的每一张工作表,另存为单独的工作薄:如果只是一两张工作表需要这样处理,我们手工操作就挺好的,可如果是若干张,手工操作--岂不是太朴素? 如果使用VBA来处理,这事就简单了. ...

  • 如何批量改变单元格部分字符的格式?

    HI,大家好,我是星光. 有个朋友问能不能批量将单元格中的部分字符改变格式,比如改变字体,字号,改变颜色-- 举个例子,如下图所示,将"领导"两个字--字体变成15号,加粗且变成血 ...

  • VBA常用小代码:就任性!一键批量更改工作表名称~

    照例举个例子,如下图的A列所示,工作表名是一些可爱家伙. 现在,我们想把工作表名称,根据E:F列的匹配信息,修改为如下形式,部门-人名: (栗子里表名修改的规则,就是依照E:F的信息,在每个人名前增加 ...

  • VBA常用小代码:对工作表按名称快速排序

    比如说,有一个工作薄,有十几张工作表,现在要重新设置工作表排放顺序,能不能快速处理哩? 当然是可以的. 为了方便大家理解和灵活使用VBA小代码,我们同03期一样,依然采用多步走的方式. 第1步,将工作 ...

  • VBA常用小代码:按指定字段将总表数据拆分为多个工作簿

    举个栗子,如上图所示的数据表,倘若需要按班级,将该表的数据拆分为1~2~3班三个工作簿,并保留在电脑的指定位置,就可以使用我们今天这篇小代码了. 操作动画演示: 动画中所粘贴的代码如下: Sub Ne ...

  • VBA常用小代码:Rang对象的排序操作

    这年头,小屁孩都寄道数据排序是数据处理过程中非常重要的一个环节,Excel也直接提供了[排序]的基础功能,VBA代码与之相对应的,便是Rang对象的Sort方法. 举个栗子.如下图所示,需要对B列的语 ...

  • VBA常用小代码203:汇总多个工作簿每个工作表名称包含指定关键词的数据到总表

    --阿嚏--谁这么想我--呵~最近天气一天凉比一天,小伙伴们记得多穿几层秋裤--多喝温开水少熬夜----以上是来自一位身穿短袖短裤大哥哥的贴心话. 咳~我们上期分享了:VBA常用小代码202:汇总指定 ...

  • VBA实用小程序13:记录单元格中存放过的数据

    如果我们能够记录单元格中曾经放置过的数据,就可以清楚地看到该单元格的编辑痕迹.如图1所示,在工作表Sheet1的单元格批注中,显示出该单元格中所有存放过的数据,包括当前正存放的数据. 图1 在工作表S ...

  • VBA小代码:批量在批注中插入图片

    有个貌美如花的朋友在后台提了这样一个问题,能不能根据名称一键将图片批量插入到单元格的批注中去,酱紫的话,当鼠标划过单元格,Excel就会自动显示图片了,很酷很实用-- 比如下面动态图所展示的这样: 哎 ...