根据属性菜单height = 246和width = 462(它不指定单位),我在用户窗体中显示图像,该窗体显示预先存在的图表, 。我希望我的图表具有一定的大小,以便当图表的.GIF保存并加载到用户图像时与尺寸匹配。在图表属性中,我可以更改尺寸,但只有英寸的选项。我怎样才能得到这些尺寸匹配?Excel VBA用户窗体 - 设置与用户窗体大小相同的图表
回答
如果使用图像控件显示图表,则根据需要调整图像控件的大小以适合用户窗体,然后将图像控件的“PictureSizeMode”属性设置为“fmPictureSizeModeStretch”。
您正在查找的转换因子是72.通过(图像ctl宽度/ 72)英寸将图表大小调整为(图像ctl高度/ 72)英寸。在你的情况下,会给你3.42×6.42英寸。当你将它加载到剪辑模式下的Image ctl中时,它将完美匹配。如果您选择将图片置于带有图片对齐的图片中央,则在剪辑和拉伸之间来回切换几乎不会产生摆动。
这里有3种方式就可以得到图表到图像:
1) 您可以在设计时CopyPicture调整大小图表工作表上得到它的剪贴板,然后在表格编辑器中选择图像ctl,然后在属性窗口中选择Image ctl的图片属性,然后粘贴。
2) 您可以调整大小的图表保存为JPG格式,(它也将努力保存为BMP,但文件尺寸变得庞大),并使用图表从文件加载到图片CTL:
myImageCtl.picture = loadPicture("C:\whatever")
3) 如果您希望在图纸上保留一张调整大小的图表的图片,并将图片从此处插入图像ctl中,而不是先将其保存到文件中,则可以将图表复制并粘贴回图表。如果您希望图片是原始图表(可能在其他图纸上)的实时更新副本,请使用PastePicture将其放回到图纸上。选择新粘贴的图片,在名称框(左上角)中输入名称(myResizedChart)并点击返回。
从这里下载modPastePicture http://www.oaltd.co.uk并安装它(并设置对OLE自动化的引用)。
然后在你的代码,你可以说:(假设你原来CopyPicture在“设置图片格式”)
shapes("myResizedChart").CopyPicture
myImage.picture = pastePicture
最后,除非你需要一个图像CTL的透明特性,也有很多的优势,使用框架而不是图像在窗体上显示您的图片。
在运行时使用将图表保存为GIF并将gif加载到图像控件中的方法来完成所有操作。
userform被命名为F_DisplayChart。它包含一个名为imgChart的图像控件和一个名为btnClose的按钮。这里是用户窗体的代码模块中的代码:
Private Sub btnClose_Click()
Unload Me
End Sub
Public Property Set Chart(cht As Chart)
' pass chart from calling code to userform
Dim dHeight As Double, dWidth As Double
Dim sPath As String
dHeight = cht.Parent.Height
dWidth = cht.Parent.Width
cht.Parent.Height = Me.imgChart.Height
cht.Parent.Width = Me.imgChart.Width
sPath = ThisWorkbook.Path & "\temp1.gif"
cht.Export Filename:=sPath, FilterName:="gif"
cht.Export sPath
Me.imgChart.Picture = LoadPicture(sPath)
cht.Parent.Height = dHeight
cht.Parent.Width = dWidth
End Property
在属性代码,该图表的尺寸以适应图像控制,出口,加载到图像控制,则图的尺寸被复位到原来的大小。
这里是调用用户窗体,活动图表传递到用户窗体的代码,然后显示形式:
Sub ShowFormWithChart()
Dim chrt As Chart
If ActiveChart Is Nothing Then Exit Sub
Set chrt = ActiveChart
With F_DisplayChart
Set .Chart = chrt
.Show
End With
End Sub
你也可以使用BMP到位GIF,并得到较大的文件大小。 jpg也可以工作,但它通常不会很好地渲染图表。
- 1. Excel VBA用户窗体
- 2. VBA用户窗体
- 3. Excel VBA用户窗体使用vlookup
- 4. Excel 2010个的用户窗体VBA
- 5. Excel VBA中用户窗体enableEvents方法
- 6. Excel VBA刷新用户窗体从另一个用户窗体命令按钮
- 7. VBA用户窗体刷新
- 8. 用户窗体下拉列表VBA
- 9. VBA用户窗体:根据Combobox访问不同的图表
- 10. 访问没有窗体实例的VBA用户窗体控件
- 11. 用户窗体上的其他用户窗体控件的设置值关闭
- 12. 在Excel用户窗体中的VBA和数据透视表/用户表单
- 13. Excel VBA用户窗体显示选中的工作表
- 14. 最擅长的搜索工作表,.. EXCEL VBA用户窗体
- 15. 用户窗体StartUpPosition
- 16. 初始化与VBA用户窗体和加载变量在Excel
- 17. Application.OnTime不与用户窗体
- 18. 窗体窗体标准窗体大小
- 19. Excel VBA在用户窗体或Excel关闭时保持用户窗体定时器运行
- 20. Excel VBA和用户窗体登录和密码VLOOKUP表
- 21. 使用图形来衡量窗口用户字体大小设置
- 22. 在窗体上设置相同大小的按钮
- 23. 用户控件使用与主窗体相同的TCP连接
- 24. 设置窗体位置与父窗体按钮相关
- 25. VBA:用户窗体多页模板
- 26. VBA用户窗体可见范围
- 27. WORD VBA - 用户窗体 - 自动填充
- 28. 儿童窗体大小设置为MDI窗体的MDI容器的大小
- 29. 如何在窗体中设置用户窗体对象以设置文本框的值(VBA)
- 30. 使用Excel 2013 VBA建立从用户窗体选项
此方法适用于将图像控件大小适合图表大小,但是由于图像控件被拉伸,它使图像控件上的文本难以阅读。我相信将图表尺寸设置为与图像控件完全相同的尺寸会产生更好看的图像(即文本不会被拉伸)。感谢您的帮助! – user1130306 2012-01-10 18:00:22
我想你的意思是“这种方法适用于图表大小与图像控件大小相适应”,因为图像控件不会重新调整大小。这是图表,重新调整大小......你是否想重新调整控件的大小以适应图表的尺寸? – 2012-01-10 18:08:42
是的,你是正确的图表大小正在拉伸,以适应图像控制。我宁愿手动将图像控件和图表的大小设置为相同的尺寸,这样就没有拉伸。由于图像控件的大小由需求设置,因此我希望将图表大小设置为与图像控件大小相同。 – user1130306 2012-01-10 18:17:46