ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3328|回复: 12

[已解决] 录了个查找代码,如何循环下去呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-30 21:58 | 显示全部楼层 |阅读模式
本帖最后由 sblisb 于 2015-11-2 15:17 编辑

如何循环查找全文时行操作呢?Sub Macro2()'
' Macro2 Macro
' 宏在 2015/10/30 由 sblisb 录制
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "A."
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveDown Unit:=wdParagraph, Count:=4, Extend:=wdExtend '向下四行

    '分为两栏
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
        InsertBreak Type:=wdSectionBreakContinuous
    Selection.Start = Selection.Start + 1
    ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
         Type:=wdSectionBreakContinuous
    With Selection.PageSetup.TextColumns
        .SetCount NumColumns:=2
        .EvenlySpaced = True
        .LineBetween = False
        .Width = CentimetersToPoints(6.95)
        .Spacing = CentimetersToPoints(0.75)
    End With
End Sub


能帮我简化一下代码吗?解决见6楼


TA的精华主题

TA的得分主题

发表于 2015-10-31 10:14 | 显示全部楼层
楼主,请说明白你的要求。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-31 11:40 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 sblisb 于 2015-10-31 11:45 编辑
413191246se 发表于 2015-10-31 10:14
楼主,请说明白你的要求。

代码只修改了第一个找到内容.如何修改查找到的所有内容.
分栏前如何根据所选中文字的字数长短来判断是分几栏?

TA的精华主题

TA的得分主题

发表于 2015-10-31 12:38 | 显示全部楼层
还是未明白,说得还是不清楚。你最好配图或附件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-31 14:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2015-10-31 12:38
还是未明白,说得还是不清楚。你最好配图或附件。

新建 Microsoft Word 文档.zip (6.97 KB, 下载次数: 53)
见附件

TA的精华主题

TA的得分主题

发表于 2015-10-31 17:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
供参考:
  1. Sub 分栏排列选择题答案()
  2.     Dim Rng As Range, cTxt$, d%, nEnd%
  3.     ActiveDocument.Range(0, 0).Select
  4.     Selection.Find.ClearFormatting
  5.     Selection.Find.Replacement.ClearFormatting
  6.    
  7.     With Selection.Find
  8.         .Text = "^b"
  9.         .Replacement.Text = ""
  10.         .Forward = True
  11.         .Wrap = wdFindContinue
  12.         .Format = False
  13.         .MatchCase = False
  14.         .MatchWholeWord = False
  15.         .MatchByte = True
  16.         .MatchWildcards = False
  17.         .MatchSoundsLike = False
  18.         .MatchAllWordForms = False
  19.     End With
  20.     Selection.Find.Execute Replace:=wdReplaceAll
  21.    
  22.     ActiveDocument.Range.PageSetup.TextColumns.SetCount NumColumns:=1
  23.    
  24.     Selection.Find.Text = "A."
  25.     On Error Resume Next
  26.     Do
  27.         ActiveDocument.Range(nEnd, nEnd).Select
  28.         If Selection.Find.Execute = False Then Exit Do
  29.         d = ActiveDocument.Range(0, Selection.Start).Paragraphs.Count
  30.         nEnd = ActiveDocument.Paragraphs(d + 4).Range.End
  31.         ActiveDocument.Range(Start:=nEnd, End:=nEnd).InsertBreak Type:=wdSectionBreakContinuous
  32.         ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start).InsertBreak Type:=wdSectionBreakContinuous
  33.         Set Rng = ActiveDocument.Range(Selection.Start + 1, nEnd)
  34.         If Err <> 0 Then Exit Do
  35.         cTxt = Rng.Text
  36.         If Len(cTxt) < 65 Then
  37.             Rng.PageSetup.TextColumns.SetCount NumColumns:=IIf(Len(cTxt) < 30, 4, 2)
  38.         End If
  39.     Loop
  40. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-31 19:19 | 显示全部楼层

谢谢!
我这个是没有选择题的题目,怎么有题目时会引起格式混乱呀 test.zip (8.16 KB, 下载次数: 55)

TA的精华主题

TA的得分主题

发表于 2015-10-31 19:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码有修改。
把文档的“手动换行符”替换成“段落标记”,即按Ctrl+H,查找^l,替换为^p
再运行程序,看是否还有错误。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-31 22:31 | 显示全部楼层
本帖最后由 sblisb 于 2015-10-31 22:44 编辑
山菊花 发表于 2015-10-31 19:37
代码有修改。
把文档的“手动换行符”替换成“段落标记”,即按Ctrl+H,查找^l,替换为^p
再运行程序,看 ...

不错,谢谢了
能不能再加一个字段长度超过65个字的不修改?

TA的精华主题

TA的得分主题

发表于 2015-11-1 08:56 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-15 18:24 , Processed in 0.025568 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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