Существует ли синтаксис vba для использования в окнах сообщений Excel vba, чтобы пользователь нажимал кнопку ОК или закрывал Excel? - PullRequest
0 голосов
/ 28 января 2019

Я настраиваю электронную таблицу Excel и хочу заставить пользователя либо принять условия обслуживания с помощью OK в окне сообщения, либо закрыть программу с помощью Отмена.Я работаю в рамках 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

Я ожидал, что программа закроется, если пользователь нажмет «Отмена», и программа откроется, если они нажмут «ОК».,Я пробовал разные подходы, и в последней ошибке отмечена ошибка компилятора, в которой аргумент не является обязательным.

1 Ответ

0 голосов
/ 28 января 2019

Рабочие книги - это коллекция всех открытых рабочих книг.Так что утверждение Workbooks.Open не имеет смысла, так как все участники уже открыты.Метод open добавляет определенную рабочую книгу в коллекцию в форме Workbooks ("c: \ Test \ myspreadsheet.xls"). Open (и по логике должен был быть Add not Open, но я вижу, откуда они пришли) Аналогично 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...