Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim NewWorkbook As Workbook
On Error GoTo ErrorHandler
'пытаемся открыть не существующий файл
NewWorkbook = Application.Workbooks.Open("C:\ex.xls")
'Если ощибки нет - что-то делаем
ErrorHandler:
'Если возникла ошибка - создаем сообщение и смотрим, что нажал пользователь
If MsgBox(Err.Description & vbCrLf & vbCrLf & "Продолжить?", vbYesNo) = vbYes Then
MsgBox "Нажал YES"
Else
MsgBox "Нажал NO"
End If
End Sub
Связь VBA(Excel) и MsgBox (Win32 API).
Надо узнать какую кнопку нажал пользователь в диалоговом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не через MsgBox, а вызывает сам Excel.
Помогите, пожалуйста.
Цитата: n!x
Задача такая:
Надо узнать какую кнопку нажал пользователь в диалоговом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не через MsgBox, а вызывает сам Excel.
Помогите, пожалуйста.
Надо узнать какую кнопку нажал пользователь в диалоговом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не через MsgBox, а вызывает сам Excel.
Помогите, пожалуйста.
Чо-то я недопонял - какой файл пользователь пытается скопировать, что Excel сам выдает ему такой msg? Поподробнее, пожалуйста, объясни свои действия!!
Если ты имеешь ввиду, что пользователь в проводнике пытается скопировать *.xls файл и система выдает ему такой msg, то тебе в WinAPI!!
Попробую поподробнее!
Запускаем Excel
Не трогаем макросы и VBA
Excel может выдать ошибки:
Что существует такой же файл (при копировании)
Что открыть не может файл, т.к. такого нет
Ну и всякие другие...
Ошибки появляются, естественно, в окнах. В них есть кнопки (в зависимости от ошибки).
"ОК", "Да", "Нет", "Отмена".
Написать код/программу на VBA, которая бы показала, какая кнопка была нажата пользователем. Тоесть, что он кликнул.
Если бы надо было узнать, что нажал пользователь в MsgBox, который мы сами создаём - то это легко...А вот в данной ситуации, когда создаёт это окно Excel, как поступить?
Вроде доступно :)
Неужели никто не знает?
Цитата: n!x
...Excel может выдать [COLOR=red]ошибки[/COLOR]:
Что существует такой же файл (при копировании)
Что открыть не может файл, т.к. такого нет
Ну и всякие другие...
В твоем вопросе уже есть ответ. Если могут быть ощибки, их надо обработать. Для этого существуют стандартнве обработчики.
Цитата: n!x
Написать код/программу на VBA, которая бы показала, какая кнопка была нажата пользователем. Тоесть, что он кликнул.
Если бы надо было узнать, что нажал пользователь в MsgBox, который мы сами создаём - то это легко...А вот в данной ситуации, когда создаёт это окно Excel, как поступить?
Код:
Цитата:
..
Не трогаем макросы и VBA
..
Читай внимательно вопрос перед тем, как на него отвечать.
Находясь на листе Excel, зайди в пункт меню 'Файл->Сохранить как...' - вот это рассматриваемая ситуация..
Выдаётся даже не ошибка, а уведомление, при перезаписи, к примеру:
"Существует такой же файл. Перезаписать?"
Надо в этом окне определить, какая кнопка нажата...
Помоги, плз...
А про обработку не понял...
Ты определил какая кнопка нажата в MsgBox?
Может я неправильно, что-то объяснил?
Ещё раз объясню:
Нужен код/программа на VBA (Редактор макросов в Excel), которая могла бы определить (не важно как (написать в ячейке, вывести в диалоговом окне через MsgBox и т.п.)) какая кнопка нажата в окне, которое вызывает Excel (перезапись, удаление, открытие и т.п.)
Host!! Кто ещё? :(
Ты собираешься проверять нажатия кнопок в стандартном диалоговом окне. Это окно, само по себе, имеет небольшое отношение к Basic'у. Иди в Win API, там тебе быстрее помогут.