ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-5-7 11:55 | 显示全部楼层

感谢

本帖已被收录到知识树中,索引项:开发帮助和教程
非常感谢957楼的ayu330602和袁版主的解答!

TA的精华主题

TA的得分主题

发表于 2009-5-7 21:02 | 显示全部楼层
非常感谢,下载了一部份附件。

TA的精华主题

TA的得分主题

发表于 2009-5-7 21:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 yuanzhuping 于 2009-5-7 10:41 发表
技巧144         用户窗体的打印
       在使用如图 144 1所示的窗体录入数据时,如果需要把窗体打印出来,可以使用PrintForm方法,如下面的代码所示。
507257#001  Private Sub CommandButton7_Click()
#002      Dim m ...

怎么我下载附件运行,提示无法装载对象,他不适用与之这台计算机。确定后,又提示找不到工程和库。

TA的精华主题

TA的得分主题

发表于 2009-5-8 00:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢版主:
      碰到一个很头痛的问题,我在自己搞的一个程序中,想套用版主老师的Listview控件,不知怎么搞的,出现一个怪现现象:那个有宏的工作簿,用代码登陆打不开,但只要先禁用宏打开一下,关闭后,再用代码登陆就能正常登陆了.错误代码为:80010105,源 (null),求助版主和众老师,谢谢!

TA的精华主题

TA的得分主题

发表于 2009-5-8 09:22 | 显示全部楼层

请教

袁版主:您好!
本人在技巧140的窗体中加了“天数”旋转控件SpinButton3。则:
相关代码修改如下:
Private Sub UserForm_Initialize()
    SpinButton1.Value = Year(Date)
    SpinButton2.Value = Month(Date)
    SpinButton3.Value = Day(Date)
    'TextBox1.Text = Year(Date) & "年"
    'TextBox2.Text = Month(Date) & "月"
    'TextBox3.Text = Day(Date) & "日"
End Sub
Private Sub SpinButton3_Change()
TextBox3.Text = SpinButton3.Value & "日"
'With SpinButton3
     ' Select Case .Value
            'Case 1 To 31
                'TextBox3.Text = .Value & "日"
            'Case Is > 31
               ' TextBox2.Text = Left(TextBox2.Text, 1) + 1 & "月"
             '   .Value = 1
        '    Case Is < 1
            '   TextBox2.Text = Left(TextBox2.Text, 1) - 1 & "月"
            '   If TextBox2.Text = 2& "月" Then .Value = 29
            '   If TextBox2.Text = 1 Or TextBox2.Text = 3 Or TextBox2.Text = 5 Or TextBox2.Text = 7 _
            '   Or TextBox2.Text = 8 Or TextBox2.Text = 10 Or TextBox2.Text = 12 Then .Value = 31
            '   If TextBox2.Text = 4 Or TextBox2.Text = 6 Or TextBox2.Text = 9 Or TextBox2.Text = 11 Then .Value = 30
       ' End Select
    'End With
End Sub
然而在运行窗体中的SpinButton3_Change事件时,“天数”只能在0~13变化.按理说,SpinButton3.Value = Day(Date)中的Day(Date)函数应该在1~31中变化呀?
为什么呀?请赐教!非常感谢!

技巧 140 制作年月选择窗体.rar

15.08 KB, 下载次数: 634

TA的精华主题

TA的得分主题

发表于 2009-5-8 09:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主太牛了,建议你整理一下出书

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 09:49 | 显示全部楼层
原帖由 ykx042907 于 2009-5-8 09:22 发表
袁版主:您好!
本人在技巧140的窗体中加了“天数”旋转控件SpinButton3。则:
相关代码修改如下:
Private Sub UserForm_Initialize()
    SpinButton1.Value = Year(Date)
    SpinButton2.Value = Month(Dat ...

你那个SpinButton3是拷贝那月份的吧?在控件的属性窗口修改max属性为31,min属性为0。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 09:51 | 显示全部楼层
原帖由 ayu330602 于 2009-5-8 00:04 发表
谢谢版主:
      碰到一个很头痛的问题,我在自己搞的一个程序中,想套用版主老师的Listview控件,不知怎么搞的,出现一个怪现现象:那个有宏的工作簿,用代码登陆打不开,但只要先禁用宏打开一下,关闭后,再用代码登陆就能 ...

不清楚怎么会这样,上传附件看看。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 09:52 | 显示全部楼层
原帖由 入孝出悌 于 2009-5-7 21:36 发表

怎么我下载附件运行,提示无法装载对象,他不适用与之这台计算机。确定后,又提示找不到工程和库。

DTP控件没正确注册?窗体中有个时间日期控件,请参阅http://club.excelhome.net/viewth ... ;page=73#pid2705819

[ 本帖最后由 yuanzhuping 于 2009-5-8 09:54 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 10:09 | 显示全部楼层

第8部分 控件与用户窗体

技巧146         在窗体中显示图表
       工作表中的图表是不能直接显示在窗体中的,如果需要在窗体上显示图表,除了使用技巧61 介绍的使用ShowWindow属性将工作表中嵌入的图表显示在独立的窗口中,还可以使用以下的方法。
146-1        使用Export方法
       可以把图表以图形格式从工作表中导出,再用窗体上的Image控件把图表显示出来,如下面的代码所示。
  1. #001  Private Sub UserForm_Initialize()
  2. #002      Dim Charts As Chart
  3. #003      Dim cName As String
  4. #004      Set Charts = Sheets("Sheet2").ChartObjects(1).Chart
  5. #005      cName = ThisWorkbook.Path & "\Temp.gif"
  6. #006      Charts.Export Filename:=cName, FilterName:="GIF"
  7. #007      Image1.Picture = LoadPicture(cName)
  8. #008    End Sub
复制代码
代码解析:
       窗体的初始化事件过程,窗体加载时将工作表中的图表显示在窗体中。
       第4行到第6行代码,使用Export方法把Sheet2表中的第一个图表导出到工作簿的同一目录下。
       Export方法以图形格式导出图表,语法如下:
       expression.Export(Filename, FilterName, Interactive)
       参数expression是必需的,一个有效的对象。
       参数Filename是必需的,导出的文件的名称。
       本例中设置Filename参数时加上了导出路径,将图形导出到同一文件夹下。
       参数FilterName是可选的,导出文件的格式。
       第7行代码,设置窗体中Image控件的Picture属性为导出文件的完整路径。
       Picture 属性指定显示在对象上的位图,语法如下:
       object.Picture = LoadPicture( pathname )
       参数expression是必需的,一个有效的对象。
       参数pathname是必需的,一个图片文件的完整路径。
       为了使窗体关闭时删除导出的图片文件,在窗体的QueryClose事件中写入下面的代码。
  1. #001  Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  2. #002      Kill ThisWorkbook.Path & "\Temp.gif"
  3. #003  End Sub
复制代码
代码解析:
       窗体关闭时使用Kill方法删除导出的图片文件。Kill方法的语法如下:
       Kill pathname
       参数Pathname是必需的,用来指定一个文件名的字符串表达式。Pathname参数可以包含目录或文件夹、以及驱动器。
       运行窗体,将工作表的图表显示在窗体中,如图所示。
       Snap1.jpg
146-2        使用API函数
       可以使用API函数把图表从工作表中导出,再用窗体上的Image控件把图表显示出来,如下面的代码所示。
  1. #001  Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
  2. #002  Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As Any) As Long
  3. ………代码略详见附件
  4. #012  Private Declare Function GetClipboardFormatName Lib "user32" Alias "GetClipboardFormatNameA" (ByVal wFormat As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long
  5. #013  Public Function LoadShapePicture(shp As Object) As IPictureDisp
  6. #014      Dim nClipsize As Long
  7. #015      Dim hMem As Long
  8. #016      Dim lpData As Long
  9. #017      Dim sdata() As Byte
  10. #018      Dim fmt As Long
  11. #019      Dim fmtName As String
  12. #020      Dim iClipBoardFormatNumber As Long
  13. #021      Dim IID_IPicture(15)
  14. ……代码略详见附件
  15. #058      EmptyClipboard
  16. #059      CloseClipboard
  17. #060  End Function
  18. #061   Private Sub UserForm_Initialize()
  19. #062      Image1.Picture = LoadShapePicture(Sheet1.ChartObjects(1))
  20. #063  End Sub
复制代码
代码解析:
       第1行到第12行代码API函数声明。
       第13行到第60行代码LoadShapePicture函数,导出工作表中的图表。
       第61行到第63行代码窗体的初始化事件过程,窗体加载时将工作表中的图表显示在窗体中,如图所示。关于Image 控件的Picture属性请参阅技巧146-1。
       Snap2.jpg

技巧146 在窗体中显示图表.rar

21.22 KB, 下载次数: 1077

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 04:06 , Processed in 0.043670 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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