根據屬性菜單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用戶窗體使用vlookup
- 2. Excel 2010個的用戶窗體VBA
- 3. VBA用戶窗體刷新
- 4. 用戶窗體下拉列表VBA
- 5. 訪問沒有窗體實例的VBA用戶窗體控件
- 6. 用戶窗體上的其他用戶窗體控件的設置值關閉
- 7. 在Excel用戶窗體中的VBA和數據透視表/用戶表單
- 8. Excel VBA用戶窗體顯示選中的工作表
- 9. 最擅長的搜索工作表,.. EXCEL VBA用戶窗體
- 10. 窗體窗體標準窗體大小
- 11. Excel VBA在用戶窗體或Excel關閉時保持用戶窗體定時器運行
- 12. 在窗體上設置相同大小的按鈕
- 13. 使用圖形來衡量窗口用戶字體大小設置
- 14. Excel VBA和用戶窗體登錄和密碼VLOOKUP表
- 15. 兒童窗體大小設置爲MDI窗體的MDI容器的大小
- 16. VBA:用戶窗體多頁模板
- 17. WORD VBA - 用戶窗體 - 自動填充
- 18. VBA用戶窗體可見範圍
- 19. 使用Excel 2013 VBA建立從用戶窗體選項
- 20. 在用戶窗體Excel中調用公共子程序VBA
- 21. 不同窗體大小7
- 22. Excel用戶窗體文本框行爲
- 23. Excel用戶窗體,保存到桌面
- 24. 禁止用戶在特定大小後調整窗體大小
- 25. 的Excel 2013 VBA用戶窗體添加COUNTIF計算
- 26. 更改窗體大小後的窗體
- 27. Excel用戶窗體與列表來選擇多個項目
- 28. Excel VBA用戶窗體 - 更新/覆蓋數據
- 29. VBA Excel 2013:從另一個用戶窗體分配數組值
- 30. 是否可以通過同一個用戶窗體上的commandbutton將文本輸入到excel用戶窗體中?
此方法適用於將圖像控件大小適合圖表大小,但是由於圖像控件被拉伸,它使圖像控件上的文本難以閱讀。我相信將圖表尺寸設置爲與圖像控件完全相同的尺寸會產生更好看的圖像(即文本不會被拉伸)。感謝您的幫助! – user1130306 2012-01-10 18:00:22
我想你的意思是「這種方法適用於圖表大小與圖像控件大小相適應」,因爲圖像控件不會重新調整大小。這是圖表,重新調整大小......你是否想重新調整控件的大小以適應圖表的尺寸? – 2012-01-10 18:08:42
是的,你是正確的圖表大小正在拉伸,以適應圖像控制。我寧願手動將圖像控件和圖表的大小設置爲相同的尺寸,這樣就沒有拉伸。由於圖像控件的大小由需求設置,因此我希望將圖表大小設置爲與圖像控件大小相同。 – user1130306 2012-01-10 18:17:46