VBA中窗体(UserForm)自由调整大小

VBA中窗体(UserForm)自由调整大小

vba中自由调整窗体大小方案:

通过添加一个标签(label),通过鼠标在标签上点击并移动来实时修改窗体大小.

先看下效果:

具体如下.

1.新建一个窗体.

\

2.在窗体的右下角添加一个标签,用来调整大小

3.设置标签的属性

设置主要属性

标题(Caption): o (字母O)

字体(Font): Marlett

鼠标指针(MousePointer):8 - fmMousePointerSizeNWSE

4 .添加窗体内代码

1 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

2 (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

3

4 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _

5 (ByVal hWnd As Long, ByVal nIndex As Long) As Long

6

7 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _

8 (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

9

10 Private Const GWL_STYLE As Long = (-16)

11 Private Const WS_MINIMIZEBOX As Long = &H20000

12 Private Const WS_MAXIMIZEBOX As Long = &H10000

13

14 Private Sub Label3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

15

16 '在文本框中显示当前窗体的宽度和高度

17 TextBox1.Value = Me.InsideWidth

18 TextBox2.Value = Me.InsideHeight

19

20 If Button = 1 Then '鼠标左键

21

22 '调整窗体大小

23 Me.Width = Me.Width + X

24 Me.Height = Me.Height + Y

25 End If

26 End Sub

27

28 Private Sub UserForm_Activate()

29

30 Dim lStyle As Long

31 Dim hWnd As Long

32

33 '为窗体添加最大化和最小化按钮

34 hWnd = FindWindow("ThunderDFrame", Me.Caption)

35 lStyle = GetWindowLong(hWnd, GWL_STYLE)

36 lStyle = lStyle Or WS_MINIMIZEBOX '最小化

37 lStyle = lStyle Or WS_MAXIMIZEBOX '最大化

38 SetWindowLong hWnd, GWL_STYLE, lStyle

39 End Sub

40

41 Private Sub UserForm_Resize()

42

43 '重新设定各控件位置

44 Label3.Left = Me.InsideWidth - Label3.Width

45 Label3.Top = Me.InsideHeight - Label3.Height

46 End Sub

尊享推荐

bet3365info 酒喝多了吐血是怎么回事

酒喝多了吐血是怎么回事

📅 10-11 👑 535
bet3365info 揭秘你的星座之谜,如何测试自己是什么星座
bet3365info iPhone双卡双待机型全解析:选购指南、功能对比、推荐机型
365bet平台客户端 qq音乐为什么打不开数据库