是否有 vba 语法可以在 excel vba 消息框中使用,以强制用户单击“确定”或关闭 excel



我正在设置一个 excel 电子表格,我想强制用户要么在消息框中接受服务条款,要么通过取消关闭程序。我正在Visual Basic中工作。我还在工作簿中放置了"术语"宏。

好吧,我以错误的方式做了,并将自己锁定在自己的程序中。 我一直在修改代码,但我无法让它组合在一起。

Sub terms()
MsgBox Prompt:="By using this program, the user agrees to all Terms and Conditions as set forth herein. Click OK to accept and continue, or cancel to exit program.", Buttons:=vbOKCancel + vbExclamation, Title:="User Agreement:"
Dim Answer As VbMsgBoxResult
If Answer = vbCancel Then Workbooks.Close
If vbOK Then Workbooks.Open
End Sub

在工作簿中,我输入了以下代码:

Private Sub Workbook_Open()
terms
End Sub
如果用户单击"取消",我希望程序会关闭,如果他们

单击"确定",程序会打开。我尝试了各种不同的方法,最新的错误指出一个编译器错误,说参数不是可选的。

工作簿

是所有打开工作簿的集合。因此,语句 Workbooks.Open 毫无意义,因为所有成员都已打开。open 方法以工作簿("c:\Test\myspreadsheet.xls")的形式将特定工作簿添加到集合中。打开(逻辑上应该是添加而不是打开,但我看到它们来自哪里)同样,Workbooks.Close 将关闭所有打开的工作簿,而您可能只想关闭刚刚打开的文件。

此外,要从消息框中获取回复,您必须分配一个变量来捕获该回复 - 所以

    answer = msgbox("You sure?",vbyesno)

所以你真正想要的是

Sub terms()
Dim msg as string
Dim Answer As VbMsgBoxResult
msg = "By using this program, the user agrees to all Terms and Conditions as set forth herein. Click OK to accept and continue, or cancel to exit program."
Answer = MsgBox(Prompt:=msg, Buttons:=vbOKCancel + vbExclamation, Title:="User Agreement:")

If Answer = vbCancel Then ThisWorkbook.Close
End Sub 

最新更新