VBA MsgBox'责任免责声明'?

时间:2015-06-07 02:34:57

标签: vba excel-vba excel

有没有办法在宏中包含一个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。如果用户点击“取消”,我仍然需要隐藏内容。

2 个答案:

答案 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中的文本在运行时为只读。

enter image description here

接下来,将此代码放在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

你已经完成了。

enter image description here