怎么样使word中的VBA窗体右上角的关闭按纽失效?

一只小蝈蝈 2003-04-10 03:02:46
怎么样使word中的VBA窗体右上角的关闭按纽失效?
...全文
192 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一只小蝈蝈 2003-04-17
  • 打赏
  • 举报
回复
谢谢
zara 2003-04-16
  • 打赏
  • 举报
回复
' 利用 Windows API
' 下面的内容在模块中定义
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

Public Const SC_CLOSE As Long = 61536
Public Const MF_BYCOMMAND As Long = &H0
Public Const MF_GRAYED As Long = &H1
Public Const MF_ENABLED As Long = &H0


' 下面是窗体中的内容
Dim hWnd As Long
Dim bState As Long

' 窗体中有个按钮 Command_Button1, 它可以切换 SC_CLOSE 的状态
Private Sub CommandButton1_Click()

Dim i As Long
Dim hMenu As Long

If hWnd = 0 Then hWnd = FindWindow(vbNullString, Me.Caption)
If hWnd <> 0 Then
hMenu = GetSystemMenu(hWnd, False)
If bState = MF_GRAYED Then
bState = MF_ENABLED
Else
bState = MF_GRAYED
End If
i = EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND Or bState)
End If


End Sub


' 窗体初始化时将 SC_CLOSE 禁止掉
Private Sub UserForm_Initialize()

Dim hMenu As Long

If hWnd <> 0 Then Exit Sub
hWnd = FindWindow(vbNullString, Me.Caption)
If hWnd <> 0 Then
hMenu = GetSystemMenu(hWnd, False)
EnableMenuItem hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED
bState = MF_GRAYED
End If

End Sub
一只小蝈蝈 2003-04-15
  • 打赏
  • 举报
回复
但是我要的不是不能关闭,而是变灰
zara 2003-04-14
  • 打赏
  • 举报
回复
maworm(虫虫) 的方法是对的啊, 虽然那个按钮没有变灰, 但是确实是不能关闭那个 UserForm 的.
一只小蝈蝈 2003-04-14
  • 打赏
  • 举报
回复
我是说让VBA窗体右上角的关闭按纽失效,各位理解不对呀
zara 2003-04-13
  • 打赏
  • 举报
回复
QueryClose 这个事件在 VBA 的帮助和 "对象浏览器" 中均没有提到, 但从 UserForm 的代码窗口的事件下拉列表中有!
maworm 2003-04-12
  • 打赏
  • 举报
回复
在窗体的queryclose 事件中写cancel=1即可

5,172

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧