很多时候有人问到,怎么样弄使得VBA中的关闭窗口的按钮消失啊。
其实在VBA中,我们可以利用API的SetWindowLong函数来进行对VBA中窗体的设置。
以下代码添加到窗体中,可以隐藏窗体的关闭按钮。
'API声明
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'窗体初始化
Private Sub UserForm_Initialize()
'将窗体设置为全部按钮都没有,不能改变大小
SetWindowLong FindWindow(vbNullString, Me.Caption), -16, &H6C10000
End Sub
在这个程序中,SetWindowLong的第四个参数其实就是控制窗体格式的,上述代码是初始化窗体的代码,如果要在窗体运行中改变窗体样式,那么第四个参数最前面加一个1。
SetWindowLong FindWindow(vbNullString, Me.Caption), -16, &H16C10000
其实通过第四个参数的改变,可以改变窗体的属性。具体的对应关系如下:
&H16C00000
| 全部按钮都没有、Title消失
|
&H16C10000
| 全部按钮都没有、无法改变窗口大小
|
&H16C50000
| 全部按钮都没有、可以改变窗口大小
|
&H16C80000
| Max、Min按钮消失、鼠标不能改变Form的大小
|
&H16C90000
| Min按钮消失、鼠标不能改变Form的大小
|
&H16CA0000
| Max按钮消失、鼠标不能改变Form的大小
|
&H16CB0000
| 鼠标不能改变Form的大小
|
&H16CC0000
| Min、Max按钮消失,鼠标仍可改变Form的大小
|
&H16CD0000
| Min按钮消失,鼠标仍可改变Form的大小
|
&H16CE0000
| Max按钮消失,鼠标仍可改变Form的大小
|
&H16CF0000
| 所有按钮都有,滑数可改变大小、正常窗口
|
&H16D10000
| 出现水平滚动条、全部按钮都没有、无法改变窗口大小
|
&H16D50000
| 出现水平滚动条、全部按钮都没有、可以改变窗口大小
|
&H16D80000
| 出现水平滚动条、Max、Min按钮消失、鼠标不能改变Form的大小
|
&H16D90000
| 出现水平滚动条、Min按钮消失、鼠标不能改变Form的大小
|
&H16DA0000
| 出现水平滚动条、Max按钮消失、鼠标不能改变Form的大小
|
&H16DB0000
| 出现水平滚动条、鼠标不能改变Form的大小
|
&H16DC0000
| 出现水平滚动条、Min、Max按钮消失,鼠标仍可改变Form的大小
|
&H16DD0000
| 出现水平滚动条、Min按钮消失,鼠标仍可改变Form的大小
|
&H16DE0000
| 出现水平滚动条、Max按钮消失,鼠标仍可改变Form的大小
|
&H16DF0000
| 出现水平滚动条、所有按钮都有,滑数可改变大小、正常窗口
|
&H16E10000
| 出现垂直滚动条、全部按钮都没有、无法改变窗口大小
|
&H16E50000
| 出现垂直滚动条、全部按钮都没有、可以改变窗口大小
|
&H16E80000
| 出现垂直滚动条、Max、Min按钮消失、鼠标不能改变Form的大小
|
&H16E90000
| 出现垂直滚动条、Min按钮消失、鼠标不能改变Form的大小
|
&H16EA0000
| 出现垂直滚动条、Max按钮消失、鼠标不能改变Form的大小
|
&H16EB0000
| 出现垂直滚动条、鼠标不能改变Form的大小
|
&H16EC0000
| 出现垂直滚动条、Min、Max按钮消失,鼠标仍可改变Form的大小
|
&H16ED0000
| 出现垂直滚动条、Min按钮消失,鼠标仍可改变Form的大小
|
&H16EE0000
| 出现垂直滚动条、Max按钮消失,鼠标仍可改变Form的大小
|
&H16EF0000
| 出现垂直滚动条、所有按钮都有,滑数可改变大小、正常窗口
|
&H16F10000
| 出现水平滚动条、垂直滚动条、全部按钮都没有、无法改变窗口大小
|
&H16F50000
| 出现水平滚动条、垂直滚动条、全部按钮都没有、可以改变窗口大小
|
&H16F80000
| 出现水平滚动条、垂直滚动条、Max、Min按钮消失、鼠标不能改变Form的大小
|
&H16F90000
| 出现水平滚动条、垂直滚动条、Min按钮消失、鼠标不能改变Form的大小
|
&H16FA0000
| 出现水平滚动条、垂直滚动条、Max按钮消失、鼠标不能改变Form的大小
|
&H16FB0000
| 出现水平滚动条、垂直滚动条、鼠标不能改变Form的大小
|
&H16FC0000
| 出现水平滚动条、垂直滚动条、Min、Max按钮消失,鼠标仍可改变Form的大小
|
&H16FD0000
| 出现水平滚动条、垂直滚动条、Min按钮消失,鼠标仍可改变Form的大小
|
&H16FE0000
| 出现水平滚动条、垂直滚动条、Max按钮消失,鼠标仍可改变Form的大小
|
&H16FF0000
| 出现水平滚动条、垂直滚动条、所有按钮都有,滑数可改变大小、正常窗口
|