ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-4-26 13:38 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
一口气读了下来,一个字."值",真不错啊,先收再学后用,先谢版主了

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-4-26 14:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 taller 于 2009-4-26 03:08 发表


Spreadsheet 控件是OWC的一部分,在Office03安装选项中选择安装“Office Web Component",或者到微软网站下载,下载后运行owc11.exe,安装之后就可以看到该控件了。

http://www.microsoft.com/downloads/deta ...

多谢郗兄,已经解决了。

TA的精华主题

TA的得分主题

发表于 2009-4-26 14:59 | 显示全部楼层
谢谢楼主整理并共享。。。。。。版主辛苦了,一定好好学习,多谢,多谢!!!

TA的精华主题

TA的得分主题

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

第8部分 控件与用户窗体

技巧129         在工作表中添加ActiveX控件
       技巧128 中使用代码在工作表中添加的是窗体控件,而本例中使用代码在工作表中添加的是ActiveX控件,两者是有区别的,在工作表中前者是使用窗体对话框添加,而后者是使用控件工具箱添加,如图所示。
Snap2.jpg
129-1        使用Add方法
       使用Add方法在工作表中添加ActiveX控件,如下面的代码所示。
  1. #001  Sub AddObj()
  2. #002      Dim Obj As New OLEObject
  3. #003      On Error Resume Next
  4. #004      Sheet1.OLEObjects("MyButton").Delete
  5. #005      Set Obj = Sheet1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
  6. #006              Left:=108, Top:=72, Width:=108, Height:=27)
  7. #007      With Obj
  8. #008          .Name = "MyButton"
  9. #009          .Object.Caption = "新建的按钮"
  10. #010          .Object.Font.Size = 16
  11. #011          .Object.ForeColor = &HFF&
  12. #012      End With
  13. #013      With ActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule
  14. #014          If .Lines(1, 1) <> "Option Explicit" Then
  15. #015              .InsertLines 1, "Option Explicit"
  16. #016          End If
  17. #017          If .Lines(2, 1) = "Private Sub MyButton_Click()" Then Exit Sub
  18. #018          .InsertLines 2, "Private Sub MyButton_Click()"
  19. #019          .InsertLines 3, vbTab & "MsgBox ""这是使用Add方法新建的按钮!"""
  20. #020          .InsertLines 4, "End Sub"
  21. #021      End With
  22. #022  End Sub
复制代码
代码解析:
       AddOLEObject过程使用Add方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。
       第3、4行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的名称为“myButton”的按钮。
       第5、6行代码,使用Add方法在向工作表中添加ActiveX控件中的命令按钮,Add方法应用于OLEObjects 对象的语法如下:
expression.Add(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height)
       其中参数expression是必需的,返回一个 OLEObjects 对象。
       参数ClassType是可选的,创建的对象的程序标识符。如果指定了 ClassType参数,则忽略FileName参数和Link参数。
       在本例中指定添加控件的程序标识符为“Forms.CommandButton.1”,即命令按钮控件,关于对象的程序标识符请参阅技巧119-3。
       参数Left和参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。
       参数Width和参数Height是可选的,以磅为单位给出OLE对象的初始大小。
       第8行代码,设置命令按钮的名称为“MyButton”。
       第9行代码,设置命令按钮的文字为“新建的按钮”
       第10行代码,设置命令按钮的文字的大小。
       第11行代码,设置命令按钮的文字的颜色。
       第13行到第21行代码,在工作表中写入新添加的命令按钮的单击事件代码。
       ActiveX控件不能像窗体控件用OnAction属性来指定宏,需要使用CodeModule对象的InsertLines方法在工作表中插入代码。
       应用于CodeModule对象的InsertLines方法的语法如下:
object.InsertLines(line, code)
       参数object是必需的,一个有效的对象。
       参数line是必需的,用来指定要插入代码的位置。
       参数code是必需的,要插入的代码。
       第14行到第16行代码判断首行内容是否为要求变量声明,如不是则添加要求变量声明语句。
       第17行到第20行代码判断是否已存在相同名称的过程,如不存在则使用InsertLines方法在工作表中插入代码。
       运行AddOLEObject过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框,如图所示。
Snap3.jpg

129-2        使用AddOLEObject方法
       在工作表中添加ActiveX控件,还可以使用AddOLEObject方法,如下面的代码所示。
  1. #001  Sub AddShapes()
  2. #002      Dim ShpBut As Shape
  3. #003      On Error Resume Next
  4. #004      Sheet1.OLEObjects("MyButton").Delete
  5. #005      Set ShpBut = Sheet1.Shapes.AddOLEObject(ClassType:="Forms.CommandButton.1", _
  6. #006              Left:=108, Top:=72, Width:=108, Height:=27)
  7. #007              ShpBut.Name = "MyButton"
  8. #008      With ActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule
  9. #009          If .Lines(1, 1) <> "Option Explicit" Then
  10. #010              .InsertLines 1, "Option Explicit"
  11. #011          End If
  12. #012          If .Lines(2, 1) = "Private Sub MyButton_Click()" Then Exit Sub
  13. #013          .InsertLines 2, "Private Sub MyButton_Click()"
  14. #014          .InsertLines 3, vbTab & "MsgBox ""这是使用AddOLEObject方法新建的按钮!"""
  15. #015          .InsertLines 4, "End Sub"
  16. #016      End With
  17. #017  End Sub
复制代码
代码解析:
       AddShapes过程使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。
       第5、6行代码,使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮,AddOLEObject方法创建OLE对象,语法如下:
expression.AddOLEObject(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height)
       AddOLEObject方法参数与Add方法类似,请参阅技巧129-1。
       运行AddShapes过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框,如图所示。
Snap4.jpg

技巧129 在工作表中添加ActiveX控件.rar

22.15 KB, 下载次数: 969

TA的精华主题

TA的得分主题

发表于 2009-4-26 21:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常感谢版主,一直从第1页读到86页,读了两遍,很有收获。

TA的精华主题

TA的得分主题

发表于 2009-4-26 21:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
新手学习较费力,还是要坚持下去,相信定会有收获。

TA的精华主题

TA的得分主题

发表于 2009-4-27 01:29 | 显示全部楼层
yuanzhuping,你太有才了!
而且有德
而且无私
而且有心
而且细心
而且耐心
最后问一句:你脑子里怎么知道这么多东西???
谢谢啊~

TA的精华主题

TA的得分主题

发表于 2009-4-27 08:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-27 09:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-27 15:20 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 03:48 , Processed in 0.047247 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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