2015-06-07 2 views
-4

Есть ли способ включить MsgBox в макрос, поэтому, когда документ открывается, пользователь должен проверить/нажать кнопку «Я согласен», чтобы продолжить и просмотреть содержимое (и если пользователь нажимает «Отменить», содержимое документа не отображается)?VBA 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 

Я знаю, что это не так, я просто не знаю, что уточнить. Я также не знаю, как это сделать, как только кто-то откроет документ.

UPDATE:

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 все еще не появляется при открытии документа, хотя. И мне все равно нужно сделать содержимое невидимым, если пользователь нажмет «Отменить».

+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