ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-4-12 19:01 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
版主辛苦了~
好东东,一定要顶!

TA的精华主题

TA的得分主题

发表于 2009-4-12 19:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
今天又来学习了,一定要进行苦练的

TA的精华主题

TA的得分主题

发表于 2009-4-13 11:32 | 显示全部楼层
太感谢楼主了!帮大忙了!辛苦

TA的精华主题

TA的得分主题

发表于 2009-4-13 14:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
真是太感谢整理汇总了

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-13 16:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

第8部分 控件与用户窗体

技巧119         遍历控件的方法
       如果窗体或工作表中的控件很多,在写代码时,如果是相同的代码,可以使用循环语句遍历控件,无需每个控件都写相同的代码,以减少代码量。
119-1        使用名称中的变量遍历控件
     如果控件使用系统缺省名称,如“TextBox1”、“TextBox2”,前面是固定的字符串,后面是序号的,可以使用For...Next 语句循环遍历控件。
      对于窗体中的控件,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim i As Integer
  3. #003      For i = 1 To 3
  4. #004          Me.Controls("TextBox" & i) = ""
  5. #005      Next
  6. #006  End Sub
复制代码
代码解析:
    窗体按钮的单击事件,一次性清空窗体中三个文本框的内容。
       第4行代码,将窗体中三个文本框名称中的最后一个序号设成变量,在文本框中循环并清空其内容。
       对于工作表中的控件,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim i As Integer
  3. #003      For i = 1 To 4
  4. #004          Me.OLEObjects("TextBox" & i).Object.Text = ""
  5. #005      Next
  6. #006  End Sub
复制代码
代码解析:
       工作表中按钮的单击事件,在工作表中的三个文本框中循环,清空文本框的内容。
       第4行代码,将工作表中四个文本框名称中的最后一个序号设成变量,使用OLEObjects方法在工作表中的文本框中循环。
       OLEObjects方法返回图表或工作表上单个OLE对象(OLEObject)或所有OLE对象的集合(OLEObjects集合)的对象,语法如下:
expression.OLEObjects(Index)
       参数expression是必需的,返回一个Chart 对象或Worksheet 对象。
       参数Index 是可选的,OLE对象的名称或编号。
       注意 控件的名称是指控件在属性窗口中的名称,如图所示。如果控件的名称没有规律不适用此方法。
Snap4.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-13 16:02 | 显示全部楼层

第8部分 控件与用户窗体

技巧119         遍历控件的方法
119-2        使用对象类型遍历控件
       如果控件的名称没有规律,可以使用For Each...Next 语句循环遍历所有控件,使用TypeName函数返回控件的对象类型,根据控件的对象类型进行相应的操作。
       对于窗体中的控件,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim Ctr As Control
  3. #003      For Each Ctr In Me.Controls
  4. #004          If TypeName(Ctr) = "TextBox" Then
  5. #005              Ctr = ""
  6. #006          End If
  7. #007      Next
  8. #008  End Sub
复制代码
代码解析:
       按钮的单击事件,遍历所有控件并把所有文本框的内容清空。
       第2行代码,声明变量类型。
       第3行代码,使用For Each...Next 语句遍历窗体所有控件。
       第4行代码,使用TypeName 函数返回变量的对象类型。
       TypeName 函数返回一个字符串,提供有关变量的信息,语法如下:
TypeName(varname)
       参数varname是必需的,它包含用户定义类型变量之外的任何变量。
       如果变量Ctr是文本框控件,无论该文本框的名称是否已经被修改,TypeName(Ctr)都会返回“TextBox”字符串。
       对于工作表中的控件,则使用下面的代码。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim Obj As OLEObject
  3. #003      For Each Obj In Me.OLEObjects
  4. #004          If TypeName(Obj.Object) = "TextBox" Then
  5. #005              Obj.Object.Text = ""
  6. #006          End If
  7. #007      Next
  8. #008  End Sub
复制代码

TA的精华主题

TA的得分主题

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

第8部分 控件与用户窗体

技巧119         遍历控件的方法
119-3        使用程序标识符遍历控件
       工作表中的ActiveX控件还可以根据控件的程序标识符找到相应的控件,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim Obj As OLEObject
  3. #003      For Each Obj In Me.OLEObjects
  4. #004          If Obj.progID = "Forms.TextBox.1" Then
  5. #005              Obj.Object.Text = ""
  6. #006          End If
  7. #007      Next
  8. #008  End Sub
复制代码
代码解析:
       工作表中按钮的单击事件,遍历工作表中的所有控件并把工作表中所有文本框的内容清空。
       第2行代码,声明变量类型。
       第3行代码,使用For Each...Next 语句遍历工作表中的所有控件。
       第4行代码,使用控件的ProgId 属性返回控件的程序标识符。
       ProgId 属性返回控件的程序标识符,语法如下:
expression.ProgId
       参数expression是必需的,一个有效的对象。
       ActiveX 控件的程序标识符如表格所示。
Snap5.jpg
       文本框控件返回的程序标识符是“Forms.TextBox.1”,此返回值并不受文本框控件名称的影响,所以根据工作表中控件的程序标识符可以找出全部文本框控件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-13 16:06 | 显示全部楼层

第8部分 控件与用户窗体

技巧119         遍历控件的方法
119-4        使用名称中的变量遍历图形
       如果工作表中有多个图形,可以根据名称的序号使用For...Next 语句遍历图形,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim i As Integer
  3. #003      For i = 1 To 3
  4. #004          Me.Shapes("文本框 " & i).TextFrame.Characters.Text = "TextBox" & i
  5. #005      Next
  6. #006  End Sub
复制代码
代码解析:
       工作表中按钮的单击事件,在工作表中的三个图形文本框中依次写入“TextBox1”、“TextBox2”和“TextBox3”字符串。
       第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。
       Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)(其中index是图形的名称或索引号)返回单个的Shape对象。
       返回单个的Shape对象后使用Characters 方法向图形文本框中添加字符。Characters 方法的语法如下:
expression.Characters(Start, Length)
       参数expression是必需的,返回一个指定文本框内Characters对象的表达式。
       参数Start是可选的,表示将要返回的第一个字符。如果此参数设置为 1 或被忽略,则Characters方法会返回以第一个字符为起始字符的字符区域。
       参数Length是可选的,表示要返回的字符个数。如果此参数被忽略,则Characters 方法会返回该字符串的剩余部分。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-13 16:07 | 显示全部楼层

第8部分 控件与用户窗体

技巧119         遍历控件的方法
119-5        使用FormControlType属性遍历图形
       如果工作表中的是窗体控件,可以使用For Each...Next语句遍历工作表中图形并根据其FormControlType属性返回特定的窗体控件,如下面的代码所示。
  1. #001  Private Sub CommandButton2_Click()
  2. #002      Dim myShape As Shape
  3. #003      For Each myShape In Sheet4.Shapes
  4. #004          If myShape.Type = msoFormControl Then
  5. #005              If myShape.FormControlType = xlCheckBox Then
  6. #006                  myShape.ControlFormat.Value = 1
  7. #007              End If
  8. #008          End If
  9. #009      Next
  10. #010  End Sub
复制代码
代码解析:
       工作表中按钮的单击事件,清除工作表中所有的复选框。
       第2行代码声明变量myShape为图形对象。
       第3行代码使用For Each...Next语句遍历工作表中的图形。
       第4行代码根据图形的Type属性判断图形是否为窗体控件。应用于Shape对象的Type属性返回或设置图形类型,窗体控件返回常量msoFormControl。
       第5行代码根据控件的FormControlType属性判断窗体控件是否为复选框控件。FormControlType属性返回窗体控件的类型,可以为表格所示的XlFormControl常量之一。
Snap6.jpg
       第6行代码使用ControlFormat属性返回工作表中的复选框,并将其他Value属性设置为1选中复选框,如果需要取消复选框只需将Value属性设置为-4146。

技巧119 遍历控件的方法.rar

29.71 KB, 下载次数: 1122

TA的精华主题

TA的得分主题

发表于 2009-4-13 17:38 | 显示全部楼层
文字加实例,学用两结合。好!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 15:14 , Processed in 0.048643 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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