標題:
[發問]
視窗解析度的問題
[打印本頁]
作者:
bowwow1975
時間:
2012-8-15 16:30
標題:
視窗解析度的問題
Private Sub Workbook_Open()
SetXLResolution
End Sub
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Sub SetXLResolution()
Dim VWidth As Integer
Dim VHeight As Integer
' 高寬自動設為螢幕大小的 80%
VWidth = GetSystemMetrics(SM_CXSCREEN)
VHeight = GetSystemMetrics(SM_CYSCREEN)
With Excel.Application
.WindowState = xlNormal ' 先將窗口還原
.Width = VWidth * 0.8 * 0.75 ' Points (~ 0.75 pixels)
.Height = VHeight * 0.8 * 0.75
.Left = VWidth * 0.1 * 0.75
.Top = VHeight * 0.1 * 0.75
End With
End Sub
複製代碼
某網站的一篇文章!
http://www.officefans.net/cdb/viewthread.php?tid=76420
但是有兩個問題
VBA 不讓
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
複製代碼
這一段放在 End 後面!
就連 Workbook_open 也說錯誤!
最前面那一段 code 是放在 thisworkbook 沒有錯吧!
作者:
bowwow1975
時間:
2012-8-15 17:04
不好意思,我解釋清楚一點
有兩個點:
第一、我開啟 Excel 的時候,因為內建背景圖,但我是用 1920x1080 設計的,但是換一台電腦就會螢幕太大!
第二、同樣的事情也發生在表單~~~~
這兩個視窗大小可以依據使用者的解析度做調整嗎?
作者:
Hsieh
時間:
2012-8-15 22:43
回復
2#
bowwow1975
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0 '設置公共常數,取得螢幕解析度的X值
Public Const SM_CYSCREEN = 1 '設置公共常數,取得螢幕解析度的Y值
複製代碼
這段程式碼應該放在一般模組內,因為公共常數只能放在一般模組
以下為Thisworkbook模組程式碼
Private Sub Workbook_Open()
VWidth = GetSystemMetrics(SM_CXSCREEN) '取得螢幕解析度的X值
VHeight = GetSystemMetrics(SM_CYSCREEN) '取得螢幕解析度的Y值
With Excel.Application
'VWidth / 1960得到與原設計解析度X值的比例
'VWidth / 1080得到與原設計解析度Y值的比例
.WindowState = xlNormal ' 先將窗口還原
.Width = VWidth * (VWidth / 1960) * 0.75 ' Points (~ 0.75 pixels)
.Height = VHeight * (VHeight / 1080) * 0.75
.Left = 0
.Top = 0
End With
End Sub
複製代碼
作者:
bowwow1975
時間:
2012-8-16 09:31
系統說沒有定義這個 Sub 或 Function.
我是點擊 Thisworkbook 插入模組,然後在 Module1 填寫上面那一段!
作者:
bowwow1975
時間:
2012-8-16 09:34
本帖最後由 bowwow1975 於 2012-8-16 09:35 編輯
好像是指 GetSystemMetrics 這個定義?
如果不行的話,可能就得全部改成 800x600 的,至少大家都可以用!
作者:
bowwow1975
時間:
2012-8-16 09:50
試著改成這樣也不行!
Private Sub Workbook_Open()
SetXLResolution
End Sub
Sub SetXLResolution()
Dim VWidth As Integer
Dim VHeight As Integer
VWidth = GetSystemMetrics(SM_CXSCREEN) '取得螢幕解析度的X值
VHeight = GetSystemMetrics(SM_CYSCREEN) '取得螢幕解析度的Y值
With Excel.Application
'VWidth / 1960得到與原設計解析度X值的比例
'VWidth / 1080得到與原設計解析度Y值的比例
.WindowState = xlNormal ' 先將窗口還原
.Width = VWidth * (VWidth / 1960) * 0.75 ' Points (~ 0.75 pixels)
.Height = VHeight * (VHeight / 1080) * 0.75
.Left = 0
.Top = 0
End With
End Sub
複製代碼
作者:
white945
時間:
2012-8-16 09:53
回復
5#
bowwow1975
[attach]12137[/attach]
作者:
bowwow1975
時間:
2012-8-16 10:32
感謝~~~ It is work now!
雖然原始碼的結果和我想的不一樣!
表單還是一樣大,Excel 只是更改視窗大小,內容還是一樣超出視窗!!
不過已經讓我學到一些東西了,感謝各位大大幫忙!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)