Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2852|回复: 7

[已解决]VBA将黄色底色内容替换成#号

[复制链接]
发表于 2015-9-18 18:01 | 显示全部楼层 |阅读模式
本帖最后由 yjwdjfqb 于 2015-9-18 18:06 编辑

VBA将黄色底色内容替换成#号,后并填充底色为红色
请老师们帮帮忙,谢谢大家了!

无标题.jpg
如图:
VBA将黄色底色内容替换成#号.rar (9.05 KB, 下载次数: 23)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-9-18 21:18 | 显示全部楼层
试着写了个,不知道是否满足要求?
VBA将黄色底色内容替换成#号 tw.rar (11.51 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2015-9-18 21:57 | 显示全部楼层
gdpgdp317 发表于 2015-9-18 21:18
试着写了个,不知道是否满足要求?

老师你好,里面没有代码,麻烦老师上传下代码好吧,谢谢老师了!
回复

使用道具 举报

发表于 2015-9-18 22:50 | 显示全部楼层
Sub ss()
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
Selection.WholeStory
For Each C In Selection.Characters
If C.HighlightColorIndex = wdYellow Then
C.Text = "#"
C.HighlightColorIndex = wdRed
End If
Next
Selection.WholeStory

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "##"
        .Replacement.Text = "#"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    For I = 1 To 10
    Selection.Find.Execute Replace:=wdReplaceAll
Next I

Application.ScreenUpdating = True
Application.DisplayAlerts = wdAlertsAll
MsgBox "完成!"
End Sub

评分

参与人数 1 +12 收起 理由
yjwdjfqb + 12 感谢老师的帮助!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-9-18 22:59 | 显示全部楼层
gdpgdp317 发表于 2015-9-18 22:50
Sub ss()
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone

感谢老师的帮助,能够实现想要的效果
就是文档内容多时,速度有点儿慢,老师,可以想法提一速度吗,谢谢老师了!
回复

使用道具 举报

发表于 2015-9-19 07:33 | 显示全部楼层    本楼为最佳答案   
wordvba貌似没有高效的办法
  1. Sub Macro1()
  2. On Error Resume Next
  3. Application.ScreenUpdating = False
  4. Dim i&, n&, ks&, js&
  5. With ActiveDocument
  6.     n = .Characters.Count
  7.     If .Characters(1).HighlightColorIndex = wdYellow Then ks = 0
  8.     For i = 1 To n - 1
  9.         If .Characters(i - 1).HighlightColorIndex <> wdYellow And .Characters(i).HighlightColorIndex = wdYellow Then ks = i - 1
  10.         If .Characters(i).HighlightColorIndex = wdYellow And .Characters(i + 1).HighlightColorIndex <> wdYellow Then
  11.             js = i:  .Range(ks, js) = "#"
  12.         End If
  13.     Next
  14.     If .Characters(n).HighlightColorIndex = wdYellow Then js = n: .Range(ks, js) = "#"
  15. End With
  16. Application.ScreenUpdating = True
  17. End Sub
复制代码

评分

参与人数 1 +12 收起 理由
yjwdjfqb + 12 感谢老师的帮助!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-9-19 10:28 | 显示全部楼层
dsmch 发表于 2015-9-19 07:33
wordvba貌似没有高效的办法

谢谢老师帮助
就是文档内容多时,速度慢点
有办法提下速度吗,谢谢老师了!
回复

使用道具 举报

 楼主| 发表于 2015-9-19 15:46 | 显示全部楼层
gdpgdp317 发表于 2015-9-18 22:50
Sub ss()
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone

老师你好

  With Selection.Find
         .Text = "##"    '这儿为什么是二个#号呀,
         .Replacement.Text = "#"
         .Forward = True
         .Wrap = wdFindAsk
         .Format = False
         .MatchCase = False
         .MatchWholeWord = False
         .MatchByte = True
         .MatchWildcards = False
         .MatchSoundsLike = False
         .MatchAllWordForms = False
     End With
     For I = 1 To 10  '这一句 从1到10是什么意思呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 09:00 , Processed in 0.481627 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表