Excel VBA 窗体之去除窗体标题栏 实现代码
时间:2022-11-09 21:29:10
在VBA中当我们有时需要显示一个无标题栏的窗体作为启动的界面,但是VBA的窗体不可以直接设置这样的属性,只有通过代码来实现
附件下载:
操作如下:
◾在Excel的VBE窗口中插入一个用户窗体,将其命名为DelTitleForm。在用户窗体中添加两个按钮,将其分别更名为和BtCancel。然后再添加一个模块。在窗体和模块中添加后面所列代码。
◾在工作薄中的任意工作表中添加一窗体按钮控件,将指定其设置宏为ShowForm。其供示范之用
具体代码:
"mdNoTitle"模块代码
Sub ShowForm()
DelTitleForm.Show
End Sub
"DelTitleForm" 窗体代码
'********************************
'---此模块演示怎样删除窗体标题栏---
'********************************
'以下声明API函数
#If Win64 Then '64位
'取得窗体样式位
Private Declare PtrSafe Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongPtrA" ( _
ByVal Hwnd As LongPtr, _
ByVal nIndex As Long) _
As LongPtr
'查找窗口
Private Declare PtrSafe Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As LongPtr
'设置窗体样式位
Private Declare PtrSafe Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongPtrA" ( _
ByVal Hwnd As LongPtr, _
ByVal nIndex As Long, _
ByVal dwNewLong As LongPtr) _
As LongPtr
'绘制窗体标题栏
Private Declare PtrSafe Function DrawMenuBar _
Lib "user32" ( _
ByVal Hwnd As LongPtr) _
As Long
'视情况向和窗体发送消息
Private Declare PtrSafe Function SendMessage _
Lib "user32" _
Alias "SendMessageA" ( _
ByVal Hwnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
lParam As Any) _
As LongPtr
'释放鼠标
Private Declare PtrSafe Function ReleaseCapture _
Lib "user32" () _
As Long
#Else
'取得窗体样式位
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) _
As Long
'查找窗口
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 Declare Function DrawMenuBar _
Lib "user32" ( _
ByVal hwnd As Long) _
As Long
'视情况向窗体发送消息
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) _
As Long
'释放鼠标控制
Private Declare Function ReleaseCapture _
Lib "user32" () _
As Long
#End If
#If Win64 Then '64位
Private hWndForm As LongPtr
Private FIstype As LongPtr
#Else
Private hWndForm As Long
Private FIstype As Long
#End If
'以下定义常数和变量
Private Const GWL_STYLE = (-16) '窗口样式
Private Const WS_CAPTION = &HC00000
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE_MOUSE = &HF012&
'---关闭按钮---
Private Sub BtCancel_Click()
Unload Me
End Sub
'---窗体双击---
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Unload Me
End Sub
'---窗体初始化---
Private Sub UserForm_Initialize()
On Error Resume Next
'查找窗体句柄
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
'取得窗体样式
FIstype = GetWindowLong(hWndForm, GWL_STYLE)
'窗体样式:原样式无标题
FIstype = FIstype And Not WS_CAPTION
'重设窗体样式
SetWindowLong hWndForm, GWL_STYLE, FIstype
'重绘窗体标题栏
DrawMenuBar hWndForm
End Sub
'---鼠标按下---
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
'释放控制
ReleaseCapture
'向窗体发送消息
SendMessage hWndForm, WM_SYSCOMMAND, SC_MOVE_MOUSE, 0
End Sub
Excel VBA 窗体之去除窗体标题栏 实现代码的下载地址:
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
excel 一个窗口多标签怎么使用
![](https://img.aspxhome.com/file/2023/7/a155377_0s.png)
macOS Big Sur系统中如何开启设置触控板三指拖拽功能?
![](https://img.aspxhome.com/file/2023/9/a209219_0s.jpeg)
如何在秒花钱包中进行贷款 秒花钱包app中进行贷款的教程
word目录页码怎么样右对齐
![](https://img.aspxhome.com/file/2023/3/29363_0s.jpg)
Win7系统找回半透明特效功能的步骤详解
![](https://img.aspxhome.com/file/2023/4/a312778_0s.jpg)
Win7屏幕颜色不合适怎么更改屏幕配色? win7更改配色方案的教程
![](https://img.aspxhome.com/file/2023/28/a245195_0s.jpg)
电脑版wps如何在文档中添加注释
![](https://img.aspxhome.com/file/2023/0/a182890_0s.png)
wps表格怎么设置隐藏某行数据
SVN客户端:Cornerstone mac版的配置与使用
![](https://img.aspxhome.com/file/2023/2/a212172_0s.png)
Win10版Xbox应用程序更新 提高稳定性和流畅性
![](https://img.aspxhome.com/file/2023/28/a248655_0s.jpg)
WPS怎么在批注里加入图片
![](https://img.aspxhome.com/file/2023/5/a164315_0s.jpg)
延伸 iPad 拓展性|如何利用转接器将 iPad 打造成一台「电脑」?
![](https://img.aspxhome.com/file/2023/0/a195880_0s.jpg)
Numbers怎么添加删除行列, Numbers mac使用教程
![](https://img.aspxhome.com/file/2023/9/a214009_0s.jpeg)
两种方法教你破折号怎么打出来
![](https://img.aspxhome.com/file/2023/5/24145_0s.png)
如何用好 Windows 10 中的多功能计算器应用程序
![](https://img.aspxhome.com/file/2023/29/a262484_0s.jpg)
如何将MindManager作为PPT工具制作精美演示文稿?
![](https://img.aspxhome.com/file/2023/5/a214005_0s.jpeg)
Win10玩游戏白屏闪退怎么回事?Win10玩艾尔登法环白屏闪退解决教程
![](https://img.aspxhome.com/file/2023/1/a274825_0s.jpg)
excel求最小值的教程
Win10专业版安全中心服务无法启动?win10安全中心打不开怎么办?
![](https://img.aspxhome.com/file/2023/26/a223529_0s.png)