返回列表 上一主題 發帖

[發問] Userform最大化(且內容比例自動放大?)

這樣還會蓋到嗎?
bobomi 發表於 2015-5-21 21:18


  奇怪咧!!  我匯出的檔案為何不是沒更新, 不然就是沒有 UseForm
重新上傳

自縮.zip (22.41 KB)

TOP

本帖最後由 GBKEE 於 2015-5-22 06:42 編輯

回復 24# PKKO
導致工作列的位置會蓋掉userform的顯示
不過不打緊,userfrom最下方不要放元件就好!

這樣可以嗎?
  1. Option Explicit
  2. Dim Form_Tag As Variant
  3. Private Sub UserForm_Activate()
  4.     Form_xlMax
  5. End Sub
  6. Private Sub Form_xlMax() '表單最大化
  7.     Dim xZoom As Double, yZoom As Double, e As Control
  8.     With Application
  9.         .WindowState = xlMaximized
  10.         xZoom = .Width / Me.Width     '寬放大的比例
  11.         '****************
  12.         yZoom = .Height / (Me.Height + 20)  '高放大的比例
  13.         '****************
  14.     End With
  15.     Top = 0
  16.     Left = 0
  17.     Width = Width * xZoom
  18.     Height = Height * yZoom
  19.     For Each e In Controls
  20.         With e
  21.             .Top = .Top * xZoom
  22.             .Left = .Left * xZoom
  23.             .Width = .Width * xZoom
  24.             .Height = .Height * yZoom
  25.             .Font.Size = .Font.Size * yZoom
  26.         End With
  27.     Next
  28. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

1.zip (2.71 KB)
這樣還會蓋到嗎?

TOP

回復 23# PKKO

zoom 就只能這樣 (它的寬高都只能是相同比例)
要想 下邊的控件不會過頭, 那麼右邊就會有多餘的空間  
要想右邊沒有多餘的空間 , 那麼下邊的控件就會過頭

自己縮放沒有上面問題 ( 但是字型無法完美縮放  )
終極一點  自己縮放 + Zoom 混搭 -> 字型可以較完美縮放

TOP

回復 21# GBKEE


    感謝超版大大,這個超好用的了(而且程式碼很簡短)
只是表單偵測的高度部分,他會偵測整個螢幕的高度
無法只偵測到工作列的高度就好

導致工作列的位置會蓋掉userform的顯示
不過不打緊,userfrom最下方不要放元件就好!
PKKO

TOP

回復 20# bobomi


    比例上還是會有點奇怪,放到最大時,右邊會有多餘的空間,不過沒關係,已經很感謝妳囉!
PKKO

TOP

本帖最後由 GBKEE 於 2015-5-20 14:00 編輯

回復 19# PKKO
直接放大
  1. Option Explicit
  2. Dim Form_Tag As Variant
  3. Private Sub UserForm_Initialize()  '表單初始化的程式
  4.     Dim e As Control
  5.     Form_Tag = Split(Top & "," & Left & "," & Width & "," & Height & "," & Font.Size, ",")
  6.     Form_xlMax
  7. End Sub
  8. Private Sub Form_xlMax() '表單最大化
  9.     Dim xZoom As Double, yZoom As Double, e As Control
  10.     With Application
  11.         .WindowState = xlMaximized
  12.         xZoom = .Width / Form_Tag(2)    '寬放大的比例
  13.         yZoom = .Height / Form_Tag(3)   '高放大的比例
  14.     End With
  15.     Top = 0
  16.     Left = 0
  17.     Width = Width * xZoom
  18.     Height = Height * yZoom
  19.     For Each e In Controls
  20.         With e
  21.             .Top = .Top * xZoom
  22.             .Left = .Left * xZoom
  23.             .Width = .Width * xZoom
  24.             .Height = .Height * yZoom
  25.             .Font.Size = .Font.Size * xZoom
  26.         End With
  27.     Next
  28. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

1.zip (2.71 KB)
最大化時, 控件不會過大

TOP

回復 10# GBKEE


    超版大大您好,您的這個方式可以保持表單以及內容比率的完整性,非常實用,也可讓小弟了解到底是如何放大及縮小的
但有沒有辦法可以直接放大
而且放大的比率是以寬或是高,任一邊的極限為極限
避免高已經到極限了,可是寬還沒,導致直接放到最大化之後,高會超過螢幕可視的位置
PKKO

TOP

回復 8# bobomi


    大大您好,
按照大大您的做法,可以手動拉大比率(大大您已經完成了!),但可否加上一個自動儲存Userform最後的調整狀況,如果沒有記憶,使用者每次都要調整實在辛苦(例如記憶在FormSize這個sheet名稱內),
下次打開始會自動抓取上次調整的大小!
PKKO

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題