马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
x
解决方案:
对Range.Find方法查找每个包含“#”的单元格,并将其中的“#”字符设置字体属性——Superscript,表示上标显示。为了体现程序的通用性,允许用户自定义需要上标显示的字符,以及让程序对单元格逐个字符检查,将每一个“#”都上标显示。
操作方法
步骤1 确定活动工作表为“生产表”,按<Alt+F11>组合键打开VBE窗口;
步骤2 单击菜单“插入”→“模块”,并录入以下代码:
Sub 替换指字符标示为上标()
Dim rng As Range, i As Integer, FirstSrt As String, inputt As String
inputt = InputBox("请指定需要上标显示的字符,只有一个字符", "指定字符", "#")'指定需要上标的字符
Application.ScreenUpdating = False'关闭屏幕更新,从而提速
Set rng = Cells.Find(inputt, LookAt:=xlPart, LookIn:=xlFormulas)'开始查找
If Not rng Is Nothing Then'如果找到
First = rng.Address'记录首个符合条件的单元格的地址
Do'循环查找,直到返回第一个找到的单元格时停止
For i = 1 To Len(rng)'循环检查每一个字符
'如果某字符等于用户输入的字符,则将它上标显示
If Mid$(rng, i, 1) = Left(inputt, 1) Then rng.Characters(Start:=i, Length:=1).Font.Superscript = True
Next
Set rng = Cells.FindNext(rng)'查找一下个
Loop Until rng.Address = First
End If
Application.ScreenUpdating = True'恢复屏幕更新
End Sub
步骤3 光标置于代码中任意位置,并按<F5>键执行,表中所有表示机台号的“#”都自动上标显示。
图 29‑2 将#标示为上标
原理分析
对Range.Find方法的“LookAt”参数设置为“xlPart”可以实现模糊查找,将包括“#”的单元格逐个找到。而Characters属性可以定位于单元格中部分字符串,配合MID$函数可以逐个字符检查,并对符合条件的字符标示为上标。
知识扩展
Superscript表示上标,Subscript表示下标字符。但上标和下标都只对文本生效,如果是数值,需要将其数字格式转换成文本后再执行标示。
如果需要对“M2”中的“2”进行上标,则可以改用以下代码:
Sub 将M后面的2标示为上标()
Dim rng As Range, i As Integer, FirstSrt As String, inputt As String
Application.ScreenUpdating = False'关闭屏幕更新,从而提速
Set rng = Cells.Find("M2", LookAt:=xlPart, LookIn:=xlFormulas)'开始查找
If Not rng Is Nothing Then'如果找到
First = rng.Address'记录首个符合条件的单元格的地址
Do'循环查找,直到返回第一个找到的单元格时停止
For i = 2 To Len(rng)'循环检查每一个字符,从第二位开始
'如果某字符等于2且前一位是“M”,则将它上标显示
If Mid$(rng, i, 1) = "2" And Mid$(rng, i - 1, 1) = "M" Then rng.Characters(Start:=i, Length:=1).Font.Superscript = True
Next
Set rng = Cells.FindNext(rng)'查找一下个
Loop Until rng.Address = First
?End If
Application.ScreenUpdating = True'恢复屏幕更新
End Sub
|