ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

金字塔: 相互学习VBA之一[3.8]

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-9 20:26 | 显示全部楼层
以下是引用[I]chenhuafu[/I]在2006-3-9 18:51:15的发言:

为了加强学习,我向孔兄提一个问题,就是我们在出题目的时候,如果答案项比较短的,那么把答案项通过制表位隔开放在同一行,如果稍长一点,放在两行,如果答案项实在超出页面的一半(只要4个选项中有一个这样),则每个答案项各占一行(段落)。

同时,采用这种设置的只是答案项,对于题干部分不管多长都要占一行(段落)。

我昨天用手工的方法重新设置了1000题,由于手脚快、几近机械化操作了,也要花50分钟才能最后整理完毕。主要是为了节省打印纸。

我来想想。 Collapse 方法 将某一区域或所选内容折叠到起始位置或结束位置。折叠之后起始位置和结束位置相同。 expression.Collapse(Direction) expression 必需。该表达式返回一个 Range 或 Selection 对象。 Direction Variant 类型,可选。指折叠某区域或所选内容的方向。可以是下列 WdCollapseDirection 常量之一:wdCollapseEnd 或 wdCollapseStart。默认值为 wdCollapseStart。 说明 如果用 wdCollapseEnd 折叠一个代表完整段落的区域,则该区域将定位于段落结束标记之后(即下段开头)。但是,在该区域折叠后,可以用 MoveEnd 方法将区域回移一个字符。如下例所示: Set myRange = ActiveDocument.Paragraphs(1).Range myRange.Collapse Direction:=wdCollapseEnd myRange.MoveEnd Unit:=wdCharacter, Count:=-1 示例 本示例将所选内容折叠为选定部分的开头。 Selection.Collapse Direction:=wdCollapseStart 本示例将 myRange 设置为代表活动文档内容区域,折叠 myRange,然后在文档的最后插入一个 2x2 表格。 Set myRange = ActiveDocument.Content myRange.Collapse Direction:=wdCollapseEnd ActiveDocument.Tables.Add Range:=myRange, NumRows:=2, NumColumns:=2
[此贴子已经被作者于2006-3-9 20:56:41编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-9 21:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

匆匆做了一个,不太好。

陈兄如果要用的话,先用着。Option Explicit Sub 排1() Dim apar As Paragraph Dim arange As Range, brange As Range, a%, b% Dim x% '这个是主程序,运行它就行了! '要选中某个区域,才行,否则,错 自动去段落 On Error Resume Next Application.ScreenUpdating = False For Each apar In Selection.Paragraphs If apar.Range.Characters(1) Like "A" Then a = apar.Range.Information(wdFirstCharacterLineNumber) Set brange = ActiveDocument.Range(apar.Range.End, apar.Range.End) b = brange.Information(wdFirstCharacterLineNumber) x = b - a Select Case x Case 0 '不做任何处理,即全部在第一行 Case 1 '做处理2,分为二行 With apar.Range.Find .Text = "(*^t*)(^t)" .MatchWildcards = True With .Replacement .Text = "\1^p" End With .Execute Replace:=wdReplaceAll, Forward:=True End With Case 2 '做处理3,分成三行 With apar.Range.Find .Text = "^t" .MatchWildcards = True With .Replacement .Text = "^p" End With .Execute Replace:=wdReplaceAll, Forward:=True End With '做处理3 End Select End If Next 自动A Application.ScreenUpdating = True End Sub Sub 自动去段落() With Selection.Find .Text = "([A-C]、*)^13" .MatchWildcards = True With .Replacement .Text = "\1^t" End With .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub Sub 自动A() Dim apar As Paragraph For Each apar In Selection.Paragraphs If apar.Range.Characters(1) Like "C" And Len(apar.Range.Text) < 25 Then With apar.Find .Text = "^t" .MatchWildcards = True With .Replacement .Text = "^t^t" End With .Execute Replace:=wdReplaceAll, Forward:=True End With Next End Sub

[此贴子已经被作者于2006-3-9 22:33:00编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-9 21:53 | 显示全部楼层
忘了加错误与屏幕之类的代码,你加吧。

TA的精华主题

TA的得分主题

发表于 2006-3-14 17:20 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 07:29 , Processed in 0.025029 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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