gpt4 book ai didi

excel - 编辑工作表并打开弹出消息窗口

转载 作者:行者123 更新时间:2023-12-04 21:12:43 26 4
gpt4 key购买 nike

我正在使用以下宏打开一个弹出消息框,拉入特定的单元格值。当消息框打开时,我无法编辑工作表。当我将鼠标指针移出消息框时,它会变成一个旋转的圆圈。如何打开我的消息框,让它保持打开状态并编辑下面的工作表?

Sub PopUp()
Dim vMsg
Dim r As Integer
For r = 4 To 16
vMsg = vMsg & Range("AD" & r).Value & Range("AE" & r).Value & Range("AF" & r).Value & Range("AG" & r).Value & Range("AH" & r).Value & Range("AI" & r).Value & Range("AJ" & r).Value & vbCrLf
Next
MsgBox vMsg, , "Values"
End Sub

最佳答案

内置MsgBox是模态的,这意味着在用户以某种方式关闭消息框之前,您无法操作工作表。典型的解决方法似乎是创建您自己的自定义 UserForm显示消息并使用 UserForm1.Show vbModeless 调用它,这将显示消息并允许用户仍然编辑工作表。

但是,除了创建您自己的自定义 UserForm 之外,还有另一种方法。 .您可以使用 Windows API 代替 VBA 接口(interface)。

为此,首先将此代码添加到模块的顶部(在所有子例程和函数之前):

Private Declare Function MessageBox _
Lib "User32" Alias "MessageBoxA" _
(ByVal hWnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) _
As Long

上面的语法采用 Windows API 函数 MessageBoxA并允许您通过调用 MessageBox 来调用它(它是别名)。

然后您可以更新您的 PopUp使用新的 MessageBox 的子程序功能。
Sub PopUp()
Dim vMsg
Dim r As Integer
For r = 4 To 16
vMsg = vMsg & Range("AD" & r).Value & Range("AE" & r).Value & Range("AF" & r).Value & Range("AG" & r).Value & Range("AH" & r).Value & Range("AI" & r).Value & Range("AJ" & r).Value & vbCrLf
Next
MessageBox &H0, vMsg, "Values", vbOkayOnly
End Sub

这将允许用户在显示消息框时访问工作表。此外,该行:
MessageBox &H0, vMsg, "Values", vbOkayOnly

可以改为
MessageBox &H0, vMsg, "Values", vbSystemModal

这将允许您访问工作表,但将始终将消息框保持在顶部(它将对所有应用程序执行此操作,而不仅仅是 Excel,但没有什么是完美的)。
MessageBox函数接受四个参数:
  • hWnd 是拥有这个消息框的窗口的特殊标识符,诀窍是用 &H0 传入一个空值所以没有窗口拥有它
  • lpText 是要显示的消息(与VBA MsgBox 函数的提示参数相同)
  • lpCaption 是要显示为标题的文本(与VBA MsgBox 函数的title 参数相同)
  • wType 是将要显示的消息框的类型(与 VBA MsgBox 函数的按钮参数相同)

  • 您可以阅读更多 here .

    关于excel - 编辑工作表并打开弹出消息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250611/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com