ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何对指定区域输入的符合条件的字符串进行格式化(如发 票号码等)?

如何对指定区域输入的符合条件的字符串进行格式化(如发 票号码等)?

作者:绿色风 分类: 时间:2022-08-17 浏览:88
楼主
kevinchengcw
Q: 如何对指定区域输入的符合条件的字符串进行格式化(如发 票号码等)?
A: 我们在处理单据的时候有希望对诸如**号码之类的输入数据进行对应的处理,以便打印效果符合要求,下面举个输入后自动格式化字符串的方式,代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Rng As Range
  3. On Error GoTo skip  '设定出错时跳转位置,避免出错卡住
  4. Application.EnableEvents = False  '禁止事件响应,避免产生连锁反应
  5. For Each Rng In Target  '列举target中的每个单元格,这样写可以应对复制粘贴和下拉填充的情况
  6.     If Not Intersect(Range("d2:h65536"), Rng) Is Nothing Then  '判断单元格位置是否在预设区域中
  7.         If Rng <> "" Then  '判断单元格内容是否为空
  8.             Rng = UCase(Trim(Rng.Value))  '不为空时将单元格字母全部大写
  9.             If Len(Rng.Value) <> 10 Then  '判断文本位数是否正确(本例为10位)
  10.                 Rng.Select  '如果不正确则选定该单元格,并装底色置为绿色,并显示提示信息
  11.                 Rng.Interior.Color = vbGreen
  12.                 MsgBox "位数错误", vbOKOnly, "错误"
  13.             Else
  14.                 If IsNumeric(Rng.Value) Then Rng = "'" & Rng.Value  '如果符合十位要求则判断单元格内容是否是数值,如果是加上单引号前缀转换成文本(因该处理方法仅对文本有效,既使用cstr处理过的数字也不能正确处理)
  15.                 With Rng
  16.                     .Interior.Color = vbYellow  '设定单元格底色
  17.                         .Characters.Font.Name = "宋体"   '设置共有的字体及字型
  18.                         .Characters.Font.FontStyle = "加粗"
  19.                     With .Characters(Start:=1, Length:=2).Font  '处理第1,2个字符的字体大小及颜色
  20.                         .Size = 11
  21.                         .Color = vbRed
  22.                     End With
  23.                     With .Characters(Start:=3, Length:=2).Font  '处理第3,4个字符的字体大小及颜色
  24.                         .Size = 11.5
  25.                         .Color = vbRed
  26.                     End With
  27.                     With .Characters(Start:=5, Length:=2).Font  '处理第5,6个字符的字体大小及颜色
  28.                         .Size = 13
  29.                         .Color = vbBlack
  30.                     End With
  31.                     With .Characters(Start:=7, Length:=1).Font  '处理第7个字符的字体大小及颜色
  32.                         .Size = 12
  33.                         .Color = vbBlack
  34.                     End With
  35.                     With .Characters(Start:=8, Length:=1).Font  '处理第8个字符的字体大小及颜色
  36.                         .Size = 11.5
  37.                         .Color = vbBlack
  38.                     End With
  39.                     With .Characters(Start:=9, Length:=1).Font  '处理第9个字符的字体大小及颜色
  40.                         .Size = 11
  41.                         .Color = vbBlack
  42.                     End With
  43.                     With .Characters(Start:=10, Length:=1).Font  '处理第10个字符的字体大小及颜色
  44.                         .Size = 10
  45.                         .Color = vbBlack
  46.                     End With
  47.                 End With
  48.             End If
  49.         Else
  50.             Rng.Interior.ColorIndex = xlNone  '如果单元格为空则底色为无色
  51.         End If
  52.     End If
  53. Next Rng
  54. skip:
  55. Application.EnableEvents = True  '恢复事件响应
  56. End Sub
本例相关设置及参数可以修改成个人所需效果。
附示例文件。
对指定区域输入的符合条件的字符串进行格式化.rar
2楼
meiok
很实用的例子啊

可我没能力套用上,有劳帮看看我这个数字判断问题


对数字的判断.rar
3楼
kevinchengcw
这样试下看看
对数字的判断.rar
4楼
meiok
感谢,感谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap