ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 在MS Office中实现对“控件”的循环操作

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-11-11 18:16 | 显示全部楼层 |阅读模式
我们在MS Office中基于“控件”编程时,经常需要对“控件”进行“循环操作”,例如需要连续清除若干个“文本框”的内容(Text属性),对连续的若干个“是非题”的答题“组合框”统一赋值(Text属性)。

令人遗憾的是,与常用的编程语言不一样,用户在MS Office的VBA中通常无法用“循环变量”直接对“控件名称”中的“尾数字”进行操作。

一、基本思路与方法

MS Office中的“控件循环”操作本质相同,但由于Word只有单个“文档”(“控件”在其中可按InlineShapes的成员被管理)、PowerPoint有多个“幻灯片”(在某个Slades具体成员中的“控件”可按Shapes的成员被管理),Excel有多张“工作表”(在某张具体的“工作表”中的“控件”可按Shapse的成员被管理),从而导致三个软件包中具体的“循环操作”语句略有差别。

⑴Word:“控件”变量名可设为ActiveDocument.InlineShapes.Item(序号i).OLEFormat.Object.Object
  其中:i是全部InlineShapes成员的大排序,ActiveDocument可以省略。

⑵PowerPoint:“控件”变量名可设为ActivePresentation.Slides(“Slides号”).Shapes.Item(“控件变量名” & i).OLEFormat.Object.Object
  其中:i是“控件名称”中的“尾数字”,ActivePresentation不可以省略。

⑶Excel:“控件”变量名可设为ActiveWorkbook.Sheets(“工作表名”) Shapes.Item(“控件变量名” & i).OLEFormat.Object.Object
  其中:i是“控件名称”中的尾数字,ActiveWorkbook可以省略。

于是,用户可以用“循环变量i”通过Word中的InlineShapes项(序号i)、对PowerPoint(或Excel)中的Shapes项(“控件名称”中的“尾数字i”)进行循环操作。

二、案例

Word、PowerPoint幻灯片Slide1和Excel工作表Sheet1中均从上到下(或从左到右)顺序放置有两个命令按钮(CommandButton1和CommandButton2)和三个标签(Label1~Label3)。

㈠在Word中单击“循环赋值(CommandButton1)”按钮和单击“循环清除(CommandButton2)”按钮事件对应的语句

Dim i As Integer
  Dim Label As Object

Private Sub CommandButton1_Click()
   For i = 1 To 3
    Set Label = InlineShapes.Item(i + 2).OLEFormat.Object.Object
    Label.Caption = i
   Next i
  End Sub

Private Sub CommandButton2_Click()
   For i = 1 To 3
    Set Label = InlineShapes.Item(i + 2).OLEFormat.Object.Object
    Label.Caption = ""
   Next i
  End Sub

㈡在PowerPoint中单击“循环赋值(CommandButton1)”按钮和单击“循环清除(CommandButton2)”按钮事件对应的语句

Dim i As Integer
  Dim Label As Object

Private Sub CommandButton1_Click()
   For i = 1 To 3
    Set Label = ActivePresentation.Slides("Slide1").Shapes.Item("Label" & i).OLEFormat.Object.Object
    Label.Caption = i
   Next i
  End Sub

Private Sub CommandButton2_Click()
   For i = 1 To 3
    Set Label = ActivePresentation.Slides("Slide1").Shapes.Item("Label" & i).OLEFormat.Object.Object
    Label.Caption = ""
   Next i
  End Sub

㈢在Excel中单击“循环赋值(CommandButton1)”按钮和单击“循环清除(CommandButton2)”按钮事件对应的语句

Dim i As Integer
  Dim Label As Object

Private Sub CommandButton1_Click()
   For i = 1 To 3
    Set Label = ActiveWorkbook.Sheets("Sheet1").Shapes.Item("Label" & i).OLEFormat.Object.Object
    Label.Caption = i
   Next i
  End Sub

Private Sub CommandButton2_Click()
   For i = 1 To 3
    Set Label = Sheets("Sheet1").Shapes.Item("Label" & i).OLEFormat.Object.Object
    Label.Caption = ""
   Next i
  End Sub

三、变化与扩展

大家可在理解MS Office各个软件包中控件循环基本原理的基础上,自己作出各种变化。也只有在你能作出各种变化时,才说明你真的理解了。

TA的精华主题

TA的得分主题

发表于 2009-12-28 21:12 | 显示全部楼层

非常翔实

十分感谢!推荐加入精华帖!

TA的精华主题

TA的得分主题

发表于 2013-8-9 14:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我没看出来这种循环有什么不同,也许是自己的水平低,请后来者评判。Word、excel、PowerPoint文件都有,是2003的。

在MS Office中实现对控件的循环操作.zip

36.77 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2013-8-12 15:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用了3年发现还是没玩透
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-10 15:09 , Processed in 0.040312 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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