Запуск формы
А вот подскажет мне кто-нибудь? Мозги набекрень и даже такую вещь не могу сообразить как сделать.
После ввода последней цифры при нажатии enter или стрелочки должна появляться форма с кнопочками.
Форму сделал, а как сделать ее вызов?
Помогите советом.
Всем драсте!
А вот подскажет мне кто-нибудь? Мозги набекрень и даже такую вещь не могу сообразить как сделать.
После ввода последней цифры при нажатии enter или стрелочки должна появляться форма с кнопочками.
Форму сделал, а как сделать ее вызов?
Помогите советом.
Указали бы хоть, в каком приложении дело происходит...
Если в Экселе, то надо в модуле листа разместить
что-то подобное:
UserForm1.Show
End Sub
Можно даже вставлять условия, типа
Что неясно - спрашивай...
Что неясно - спрашивай...
Да, дело происходит в Экселе.
А нужно вот что.
Есть столбец из 10 ячеек.
Ввожу цифирки, и после того, как ввел цифиру в последнюю (положим А10) ячейку, должна появиться форма типа алерт: "Все ли данные внесены верно?" с кнопочками "да" и "нет"
Нужно именно конкретную ячейку указать.
Да, дело происходит в Экселе.
А нужно вот что.
Есть столбец из 10 ячеек.
Ввожу цифирки, и после того, как ввел цифиру в последнюю (положим А10) ячейку, должна появиться форма типа алерт: "Все ли данные внесены верно?" с кнопочками "да" и "нет"
Нужно именно конкретную ячейку указать.
Ну тогда я тебе все правильно указал:
Dim Ans As Integer
If Target.Address="$A$10" Then
Ans = 0
Ans = MsgBox("Все верно?", vbQuestion + vbYesNo, "Еще вопросик...")
If Ans = vbYes Then Call ОбработкаДанных
End If
End Sub
Dim Ans As Integer
If Target.Address="$A$10" Then
Ans = 0
Ans = MsgBox("Все верно?", vbQuestion + vbYesNo, "Еще вопросик...")
If Ans = vbYes Then Call ОбработкаДанных
End If
End Sub
Вставил этот код в модуль листа. Не работает. Не появляется диалоговое окошко.
Может я чайник?
Вставил этот код в модуль листа. Не работает. Не появляется диалоговое окошко.
Может я чайник?
Странно. Ну, давай потестируем.
Вставь перед строчкой
If Target.Address="$A$10" Then
строчку
MsgBox "Privet!"
Выскакивает сообщение при вводе формулы или числа в ЛЮБУЮ ячейку?
Вставь перед строчкой
If Target.Address="$A$10" Then
строчку
MsgBox "Privet!"
Выскакивает сообщение при вводе формулы или числа в ЛЮБУЮ ячейку?
Доброго утра!
Да, выскакивает. Но если ставлю MsgBox "Privet!" после If Target.Address="$A$10" Then, то ничего не появляется.
В чем проблема, не пойму.
Доброго утра!
Да, выскакивает. Но если ставлю MsgBox "Privet!" после If Target.Address="$A$10" Then, то ничего не появляется.
В чем проблема, не пойму.
Отлично. Значит обработчик включается. Значит, проблема скорее всего в том, что адрес нужной тебе ячейки у тебя возвращается как-то по другому.
Поставь вместо MsgBox "Privet!"
команду MsgBox Target.Address
(перед if)
и узнай, как эксель возвращает нужный тебе адрес.
В принципе, если ты вставишь то, что тебе сообщат вместо $A$10 в ифе, все должно заработать.
Но лучше сообщи сюда то, что тебе сообщат, здесь возможны тонкости.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Ans As Integer
If Target.Address = Worksheets("1").Range("a10").Address() Then
UserForm1.Show
End If
End Sub
Спасибо за подмогу.
З.Ы. а UserForm1 можно только скрыть? Close с ней нельзя делать? У нее такого нет что-ли?
Сделал вот так Работает
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Ans As Integer
If Target.Address = Worksheets("1").Range("a10").Address() Then
UserForm1.Show
End If
End Sub
Спасибо за подмогу.
З.Ы. а UserForm1 можно только скрыть? Close с ней нельзя делать? У нее такого нет что-ли?
Молодец, все правильно ты сделал.
Есть еще Unload UserForm1
Скрывать обычно удобнее - второй раз загружать не надо, быстрее работает при последующих загрузках. Но если уверен, что второй раз не понадобится - выгружай смело.
Молодец, все правильно ты сделал.
Есть еще Unload UserForm1
Скрывать обычно удобнее - второй раз загружать не надо, быстрее работает при последующих загрузках. Но если уверен, что второй раз не понадобится - выгружай смело.
Благодарю. А вот такой небольшой вопросик: как сделать, чтобы макрос запускался при открытии файла? Как бы автозапуск
Благодарю. А вот такой небольшой вопросик: как сделать, чтобы макрос запускался при открытии файла? Как бы автозапуск
Есть два способа:
Или разместить в обычном модуле макрос с названием
Auto_Open, или разместить в модуле книги макрос Workbook_Open.
Отличие между ними состоит в следующем:
Workbook_Open. Он запускается и при открытии "руками" и при открытии программно (с помощью Workbooks.Open) - если только перед этим не были отключены обработчики ошибок командой Application.EnableEvents = False.
Auto_Open. Запускается только при открытии руками, зато не отключается .EnableEvents
Скорее всего, тебе все равно, какой использовать. Я обычно использую Auto_Open. Чтобы иметь возможность открывать подобные файлы без запуска, у меня есть файлик с Workbooks.Open (я не очень люблю отключать-включать обработчики событий, использую это только в самых крайних случаях).