如何用VBA实现根据自己的需要定制excelexcel vba界面美化

查看: 5334|回复: 7
想用VBA在自己设计的窗体中实现excel自带的绘制散点光滑曲线图,窗体是excel的VBA设计
阅读权限20
在线时间 小时
本帖最后由 阁子226 于
22:27 编辑
想用VBA在自己设计的窗体中实现excel自带的绘制散点光滑曲线图,窗体是excel的VBA设计的
QQ截图22.png (21.32 KB, 下载次数: 27)
22:25 上传
阅读权限95
在线时间 小时
本帖最后由 qy1219no2 于
22:48 编辑
技巧146& && && &在窗体中显示图表
工作表中的图表是不能直接显示在窗体中的,如果需要在窗体上显示图表,除了使用技巧61 介绍的使用ShowWindow属性将工作表中嵌入的图表显示在独立的窗口中,还可以使用以下的方法。
146-1& && &&&使用Export方法
可以把图表以图形格式从工作表中导出,再用窗体上的Image控件把图表显示出来,如下面的代码所示。
#001&&Private Sub UserForm_Initialize()
#002& && &Dim Charts As Chart
#003& && &Dim cName As String
#004& && &Set Charts = Sheets(&Sheet2&).ChartObjects(1).Chart
#005& && &cName = ThisWorkbook.Path & &\Temp.gif&
#006& && &Charts.Export Filename:=cName, FilterName:=&GIF&
#007& && &Image1.Picture = LoadPicture(cName)
#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事件中写入下面的代码。
#001&&Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
#002& && &Kill ThisWorkbook.Path & &\Temp.gif&
#003&&End Sub复制代码
代码解析:
窗体关闭时使用Kill方法删除导出的图片文件。Kill方法的语法如下:
Kill pathname
参数Pathname是必需的,用来指定一个文件名的字符串表达式。Pathname参数可以包含目录或文件夹、以及驱动器。
运行窗体,将工作表的图表显示在窗体中
146-2& && &&&使用API函数
可以使用API函数把图表从工作表中导出,再用窗体上的Image控件把图表显示出来,如下面的代码所示。
#001&&Private Declare Function CreateStreamOnHGlobal Lib &ole32& (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
#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
………代码略详见附件
#012&&Private Declare Function GetClipboardFormatName Lib &user32& Alias &GetClipboardFormatNameA& (ByVal wFormat As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long
#013&&Public Function LoadShapePicture(shp As Object) As IPictureDisp
#014& && &Dim nClipsize As Long
#015& && &Dim hMem As Long
#016& && &Dim lpData As Long
#017& && &Dim sdata() As Byte
#018& && &Dim fmt As Long
#019& && &Dim fmtName As String
#020& && &Dim iClipBoardFormatNumber As Long
#021& && &Dim IID_IPicture(15)
……代码略详见附件
#058& && &EmptyClipboard
#059& && &CloseClipboard
#060&&End Function
#061& &Private Sub UserForm_Initialize()
#062& && &Image1.Picture = LoadShapePicture(Sheet1.ChartObjects(1))
#063&&End Sub复制代码代码解析:
第1行到第12行代码API函数声明。
第13行到第60行代码LoadShapePicture函数,导出工作表中的图表。
第61行到第63行代码窗体的初始化事件过程,窗体加载时将工作表中的图表显示在窗体中
阅读权限20
在线时间 小时
您好,谢谢您!不知道您说的技巧多少是在哪里看的……还有我的本意是想用VBA编程直接在窗口中生成图表或者能用VBA直接在窗体中调用excel自带的画图表功能,不是想现在表格中生成图然后在把图导到窗体中,这个能给解决下吗?现在在做毕业设计需要用到……烦吗您了
阅读权限50
在线时间 小时
你可以研究一下这个文件
11:35 上传
点击文件名下载附件
26.25 KB, 下载次数: 330
阅读权限95
在线时间 小时
EXCEL窗体上生成图表,上述方法是可行的,也可能是最简单直接的。其他方法,至今还不知道。毕竟EXCEL是一款封装好了的办公软件,不是一款开放的编程语言。
阅读权限20
在线时间 小时
嗯,谢谢,我试试
阅读权限30
在线时间 小时
下来试试谢谢分享
阅读权限10
在线时间 小时
& & & & & & & &
我也有这样的问题呀,下来看看!
最新热点 /1
人人都要过六一,当当网ExcelHome部分图书4.9折封顶,莫失良机!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师

我要回帖

更多关于 excel vba界面 的文章

 

随机推荐