標題:
Excel VBA 如何自動調整表單大小
[打印本頁]
作者:
Jared
時間:
2013-7-17 14:31
標題:
Excel VBA 如何自動調整表單大小
想請問一下大大
之前VBA表單寫好後
本身表單要填寫的內容較多
以目前一般22吋螢幕看還OK
但是換到筆電上面
發現表單開啟後
最下面的按鍵就按不到了
有辦法利用滑鼠將表單大小等比縮小嗎?
因為我利用按鍵縮小
改變了表單大小
但是內容沒有等比縮小
Sub 設定自訂表單的尺寸()
MsgBox “將UserForm1的高度與寬度各放大1.5倍”
takasa = UserForm1.Height
haba = UserForm1.Width
UserForm1.Height = takasa * 3/2
UserForm1.Width = haba * 3/2
UserForm1.Show
MsgBox “回復原來的狀態”
UserForm1.Height = takasa
UserForm1.Width = haba
End Sub
複製代碼
有其他解決方式
可以解答我的疑惑呢? 感激不盡 >//<
作者:
stillfish00
時間:
2013-7-17 15:22
回復
1#
Jared
提供一個方法,根據表單的複雜度,效果可能不一定很好,供你參考:
在該表單的程式碼加上下面Code,開啟表單後,在表單上按:
Ctrl+滑鼠左鍵拖曳向上,可放大表單
Ctrl+滑鼠左鍵拖曳向下,可縮小表單
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Static lastY As Single
If Button = 1 And Shift = 2 Then
If Y - lastY > 5 Then
ResizeUserform 1.1
lastY = Y
ElseIf lastY - Y > 5 Then
ResizeUserform 0.9
lastY = Y
End If
End If
End Sub
Private Sub ResizeUserform(dSizeCoeff As Double)
Dim c
With Me
.Width = .Width * dSizeCoeff
.Height = .Height * dSizeCoeff
For Each c In .Controls
With c
.Top = .Top * dSizeCoeff
.Left = .Left * dSizeCoeff
.Width = .Width * dSizeCoeff
.Height = .Height * dSizeCoeff
On Error Resume Next
.Font.Size = .Font.Size * dSizeCoeff
On Error GoTo 0
End With
Next
End With
End Sub
複製代碼
作者:
GBKEE
時間:
2013-7-17 16:56
回復
2#
stillfish00
加上可還原(原來的大小)
Option Explicit
Dim xME()
Private Sub UserForm_Initialize()
Dim i As Integer, e As Variant
ReDim xME(0 To Controls.Count)
xME(0) = Array(Top, Left, Height, Width, Font.Size)
For Each e In Controls
With e
i = i + 1
xME(i) = Array(.Top, .Left, .Height, .Width, .Font.Size)
End With
Next
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim i As Integer, e As Variant
Static lastY As Single
Debug.Print Shift
If Button = 1 And Shift = 2 Then
If Y - lastY > 5 Then
ResizeUserform 1.1
lastY = Y
ElseIf lastY - Y > 5 Then
ResizeUserform 0.9
lastY = Y
End If
ElseIf Button = 2 And Shift = 2 Then '按下右鍵
Top = xME(0)(0)
Left = xME(0)(1)
Height = xME(0)(2)
Width = xME(0)(3)
Font.Size = xME(0)(4)
For Each e In Controls
With e
i = i + 1
.Top = xME(i)(0)
.Left = xME(i)(1)
.Height = xME(i)(2)
.Width = xME(i)(3)
.Font.Size = xME(i)(4)
End With
Next
End If
End Sub
複製代碼
作者:
stillfish00
時間:
2013-7-17 17:07
回復
3#
GBKEE
太好了,我還一直在想操作太多次字型可能會變掉。
還原是個好主意!
作者:
sunnyso
時間:
2013-7-17 21:09
回復
3#
GBKEE
感謝,實用
作者:
Jared
時間:
2013-7-19 09:16
回復
3#
GBKEE
感謝大大的幫忙,又學到了一招
作者:
Jared
時間:
2013-7-19 09:20
回復
2#
stillfish00
果然表單太複雜也不行,但還是感謝大大幫忙^^
作者:
Jared
時間:
2013-7-19 09:36
回復
3#
GBKEE
試了一下,如果要還原是要按哪個按鍵?>\<
作者:
GBKEE
時間:
2013-7-19 09:44
本帖最後由 GBKEE 於 2013-7-19 09:45 編輯
回復
8#
Jared
Shift
0 (零) 沒有鍵
1 SHIFT 鍵
2 CTRL 鍵
4 ALT 鍵
If Button = 1 And Shift = 2 Then '按下左鍵 +Shift
ElseIf Button = 2 And Shift = 2 Then '按下右鍵 +Shift
複製代碼
程式碼不了解要多看VBA說明
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)