ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

请教宏问题。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2002-9-2 01:50 | 显示全部楼层 |阅读模式
请帮助改正下面宏中错误。谢谢 Sub 米字格() ' ' 米字格 Macro ' 宏在 02-6-21 由 aaa 创建 'word to tb 0 Dim plefy As Long Dim ptop As Long Dim ydsize As Long Dim tdspace As Long '文本框边距(默认2磅) tdspace = InputBox("请输入文本框边距", , 2) '本次转换以前图形对象数 Countl = ActiveDocument.Shapes.Count '起点(所迁文字第一个字符相对页面的水平、垂直距离) Pleft = Selection.Information(wdHorizontalPositionRelativeToPage) plop = Selection.Information(wdVerticalPositionRelativeToPage) '所选文字的大小 fSize = Selection.Font.Size '文本框的大小 tdSize = fSize + tdspace * 2 '返回所选文字的字符格式 Set DupFOnt = Selection.Font.Duplicate '返回所选文字的文本(无格式) tStr = Selection.Text '返回所先文字的字符个数 slen = Len(pStr) '删除所选文字 Selection.Delete '逐字填入“米”字格 For i = i To slen '当前要创建文本框的起点(为了简化程序并且从实际出发,没有考虑换行) tdleft = Pleft + tdSize * (i - 1) '创建一个文本框 set tShape = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, tbLeft, pTop, tbSize, tbSize) tShape.Name = "TBl" '设置文本框文字 With tShape.TextFrame '向文本区添加一个文字 .TextRange.Text = Mid(pStr, i, 1) '将文本区文字的格式设置成原来所选文字的格式 TextRange.Font = DupFOnt '设置固定行高和具体磅值 .TextRange.ParagraphFormat .LineSpacingRule = wdLineSpaceExactly 'TextRange.ParagraphFormat. LineSpacing = fSize '设置文本框边距 .MarginBottom = tbSpace .MarginLeft = tbSpace .MarginRight = tbSpace .MarginTop = tbSpace End With '画“米”字格的4条线 With ActiveDocument.Shapes .AddLine(tbLeft, ptop, tbLeft + tbSize, ptop + tbSize).Name = "Lin1" .AddLine(tbLeft, ptop, tbLeft + tbSize, tbLeft + tbSize, ptop).Name = "Lin2" .AddLine(tbLeft, ptop + ptop + tbSize / 2, tbLeft + tbSize, ptop + tbSize / 2).Name = "Lin3" .AddLine(tbLeft + tbSize / 2, ptop, tbLeft + tbSize / 2, ptop + tbSize).Name = "Lin4" '组合的“米”字线命名为R1,线型设置为虚线 With .Range(Array("Lin1", "Lin2", "Lin3", "Lin4")).Group .Name = "R1" .Line.DashStyle = msoLineSquareDot End With End With '把文本框和米字线组合 ActiveDocument.Shapes.Range(Array("TB1", "R1")).Group.Select Next i '本次转换以后文本框组合前图表对象数 Count2 = ActiveDocument.Shapes.Count '如果只处理一个文字不用再组合 If Count2 - Count1 > 1 Then '组合生成的所有图形对象并且选中 Do ActiveDocument.Shapes.Range(Array(Count1 + 1, Count1 + 2)).Group.Select '上一语句执行前多一个图形对象(这次的图形对象全部组合成一个了) Loop While Count3 > Count1 + 1 End If '设置成紧密型环绕 Seleion.ShapeRange.WrapFormat.Type = wdWrapTight End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 19:44 , Processed in 0.028161 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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