ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > Excel VBA > 在单元格输入数据时,把其中的数值变色加粗。

在单元格输入数据时,把其中的数值变色加粗。

作者:绿色风 分类: 时间:2022-08-18 浏览:288
楼主
wudixin96
针对花花提出的问题,可以不予考虑,只要求简单的数值格式,整数或带小数点的数值就行 了。其它格式不要求,略显麻烦了,如果加其它格式。

答案正确:奖励1-3个技能分
截止时间:2011年8月12日
回帖要求:以代码形式贴上。d.gif
 
2楼
涅磐86970
上个烂的。。
Private Sub Worksheet_Change(ByVal Target As Range)
    For i = 1 To Len(Target.Value)
        
        If Mid(Target.Value, i, 1) >= "0" And Mid(Target.Value, i, 1) <= "9" Then
            Target.Characters(Start:=i, Length:=1).Font.FontStyle = "加粗"
        Else
             Target.Characters(Start:=i, Length:=1).Font.FontStyle = "常规"
        End If
        
        If i > 1 Then
            If Mid(Target.Value, i, 1) = "." And Mid(Target.Value, i - 1, 1) >= "0" And Mid(Target.Value, i - 1, 1) <= "9" And Mid(Target.Value, i + 1, 1) >= "0" And Mid(Target.Value, i + 1, 1) <= "9" Then
           Target.Characters(Start:=i, Length:=1).Font.FontStyle = "加粗"
        End If
        End If
        
    Next
   
End Sub
3楼
gdgzlyh

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim i As Integer
  3. Dim s As Integer
  4. Dim l As Integer
  5. Dim t1, t2
  6. If Target.Count > 1 Then Exit Sub
  7. s = 0: l = 0
  8. For i = 1 To Len(Target)
  9. t1 = Mid(Target, i, 1)
  10. t2 = IIf(i < Len(Target), Mid(Target, i + 1, 1), "")
  11.     If s = 0 And IsNumeric(t1) Then
  12.         s = i
  13.     End If
  14.     If s > 0 And Not IsNumeric(t1) And t1 <> "." Then
  15.         l = i
  16.         With Target.Characters(Start:=s, Length:=l - s).Font
  17.             .FontStyle = "加粗"
  18.             .ColorIndex = 3
  19.         End With
  20.         s = 0: l = 0
  21.     ElseIf s > 0 And IsNumeric(t1) And i = Len(Target) Then
  22.         l = i + 1
  23.         With Target.Characters(Start:=s, Length:=l - s).Font
  24.             .FontStyle = "加粗"
  25.             .ColorIndex = 3
  26.         End With
  27.         s = 0: l = 0
  28.     ElseIf s > 0 And t1 = "." And Not IsNumeric(t2) And t2 <> "" Then
  29.         l = i
  30.         With Target.Characters(Start:=s, Length:=l - s).Font
  31.             .FontStyle = "加粗"
  32.             .ColorIndex = 3
  33.         End With
  34.         s = 0: l = 0
  35.     ElseIf s > 0 And t1 = "." And i = Len(Target) Then
  36.         l = i
  37.         With Target.Characters(Start:=s, Length:=l - s).Font
  38.             .FontStyle = "加粗"
  39.             .ColorIndex = 3
  40.         End With
  41.         s = 0: l = 0
  42.     End If
  43. Next i
  44. End Sub
4楼
liuguansky
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Cells.Count = 1 Then
  3.         If Target.Column = 1 Then
  4.             Dim m, k%, s&
  5.             With CreateObject("vbscript.regexp")
  6.                 .Global = True
  7.                 .MultiLine = True
  8.                 .Pattern = "(\d*[\.\d]{0,1}\d+)"
  9.                 If .test(Target.Value) Then
  10.                     arr = Split(.Replace(Target.Value, vbTab), vbTab)
  11.                     For Each m In .Execute(Target.Value)
  12.                         k = k + 1: s = s + Len(arr(k - 1))
  13.                         With Target.Characters(s + 1, Len(m)).Font
  14.                             .Size = 16
  15.                             .ColorIndex = 47
  16.                         End With
  17.                         s = s + Len(m)
  18.                     Next
  19.                 End If
  20.             End With
  21.         End If
  22.     End If
  23. End Sub


 

对小数点的处理,是这样的吗?
5楼
terryfei
来看看~想知道答案!
6楼
zemon
学习下
7楼
xyf2210
最复杂的,无敌啥时候教教俺正则呀
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.    
  3.     Dim i&
  4.     For i = 1 To Len(Target)
  5.         If Mid(Target, i, 3) Like "[0-9]" & "." & "[0-9]" Then
  6.             Target.Characters(Start:=i, Length:=3).Font.Bold = True
  7.             Target.Characters(Start:=i, Length:=3).Font.Color = vbRed

  8.         ElseIf Mid(Target, i, 1) Like "[0-9]" Then
  9.             Target.Characters(Start:=i, Length:=1).Font.Bold = True
  10.             Target.Characters(Start:=i, Length:=1).Font.Color = vbRed
  11.         End If

  12.     Next

  13. End Sub

免责声明

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

评论列表
sitemap