有没有办法在宏中包含一个MsgBox,所以当文档打开时,用户必须检查/点击一个"我同意"按钮,以便继续和查看内容(如果用户点击"取消"文件内容不会出现)?
这是最初嘲笑的:
Private Sub CheckBox1_Click()
rsp = MsgBox("I Agree", vbOKCancel)
If rsp = vbOK Then
MsgBox ("OK button")
Else
MsgBox ("Cancel button")
End If
End Sub
我知道它不对,我只是不知道要改进什么。我也不知道如果有人打开文档就会让它出现。
更新:
Private Sub Workbook_Open()
Sheets("Sheet1").Select
ActiveSheet.Range("A1").Select
rsp = MsgBox("[blahblahblah] I Agree", vbOKCancel)
If rsp = vbOK Then
ActiveSheet.Range("A1").Select
Else
MsgBox ("You may not view document without agreeing to terms.")
End If
End Sub
虽然打开文档时仍然没有出现MsgBox。如果用户点击“取消”,我仍然需要隐藏内容。
答案 0 :(得分:1)
这应该有用。
Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = False
rsp = MsgBox("I Agree", vbOKCancel)
If rsp <> vbOK Then
Application.Quit
Else
ThisWorkbook.Windows(1).Visible = True
End If
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:1)
这是我通常做的事情。我不使用Msgbox
。原因很简单。有时我需要在Disclaimer
中显示大量信息。但是,如果您仍然需要使用MsgBox
,请从下面调整它。
这样做
插入UserForm
,如下图所示。放置Textbox
和两个CommandButtons
。在Textbox
的属性中,使其成为多行和可滚动(仅限垂直)。将CommandButtons
命名为图像中所示。同时将Textbox
.Locked
属性更改为True
,以便Textbox
中的文本在运行时为只读。
接下来,将此代码放在UserForm
Const sLiabMsg As String = "Blah Blah Blah. Your Disclaimer goes here"
Private Sub UserForm_Initialize()
bAllow = False
TextBox1.Text = sLiabMsg
End Sub
Private Sub CommandButton1_Click()
bAllow = True
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
接下来插入一个Module
并将这一行粘贴到其中
Public bAllow As Boolean
接下来在ThisWorkbook
代码区域中粘贴此代码
Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = False
UserForm1.Show
If bAllow = True Then
ThisWorkbook.Windows(1).Visible = True
Sheet1.Visible = xlSheetVisible
Sheet1.Activate
Else
ThisWorkbook.Close (False)
End If
End Sub
你已经完成了。