Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск формы

464
01 июля 2003 года
WildAn
147 / / 19.05.2003
Всем драсте!
А вот подскажет мне кто-нибудь? Мозги набекрень и даже такую вещь не могу сообразить как сделать.
После ввода последней цифры при нажатии enter или стрелочки должна появляться форма с кнопочками.
Форму сделал, а как сделать ее вызов?
Помогите советом.
267
01 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn
Всем драсте!
А вот подскажет мне кто-нибудь? Мозги набекрень и даже такую вещь не могу сообразить как сделать.
После ввода последней цифры при нажатии enter или стрелочки должна появляться форма с кнопочками.
Форму сделал, а как сделать ее вызов?
Помогите советом.



Указали бы хоть, в каком приложении дело происходит...

Если в Экселе, то надо в модуле листа разместить
что-то подобное:

 
Код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    UserForm1.Show
End Sub


Можно даже вставлять условия, типа
 
Код:
If Target.Address="$E$10" Then UserForm1.Show


Что неясно - спрашивай...
464
01 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark

Что неясно - спрашивай...


Да, дело происходит в Экселе.
А нужно вот что.
Есть столбец из 10 ячеек.
Ввожу цифирки, и после того, как ввел цифиру в последнюю (положим А10) ячейку, должна появиться форма типа алерт: "Все ли данные внесены верно?" с кнопочками "да" и "нет"
Нужно именно конкретную ячейку указать.

267
01 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn

Да, дело происходит в Экселе.
А нужно вот что.
Есть столбец из 10 ячеек.
Ввожу цифирки, и после того, как ввел цифиру в последнюю (положим А10) ячейку, должна появиться форма типа алерт: "Все ли данные внесены верно?" с кнопочками "да" и "нет"
Нужно именно конкретную ячейку указать.



Ну тогда я тебе все правильно указал:

 
Код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
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
464
01 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark



 
Код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
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


Вставил этот код в модуль листа. Не работает. Не появляется диалоговое окошко.
Может я чайник?

267
01 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn

Вставил этот код в модуль листа. Не работает. Не появляется диалоговое окошко.
Может я чайник?



Странно. Ну, давай потестируем.

Вставь перед строчкой
If Target.Address="$A$10" Then
строчку
MsgBox "Privet!"

Выскакивает сообщение при вводе формулы или числа в ЛЮБУЮ ячейку?

464
02 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark


Вставь перед строчкой
If Target.Address="$A$10" Then
строчку
MsgBox "Privet!"

Выскакивает сообщение при вводе формулы или числа в ЛЮБУЮ ячейку?


Доброго утра!
Да, выскакивает. Но если ставлю MsgBox "Privet!" после If Target.Address="$A$10" Then, то ничего не появляется.
В чем проблема, не пойму.

267
02 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn

Доброго утра!
Да, выскакивает. Но если ставлю MsgBox "Privet!" после If Target.Address="$A$10" Then, то ничего не появляется.
В чем проблема, не пойму.



Отлично. Значит обработчик включается. Значит, проблема скорее всего в том, что адрес нужной тебе ячейки у тебя возвращается как-то по другому.

Поставь вместо MsgBox "Privet!"
команду MsgBox Target.Address
(перед if)
и узнай, как эксель возвращает нужный тебе адрес.
В принципе, если ты вставишь то, что тебе сообщат вместо $A$10 в ифе, все должно заработать.
Но лучше сообщи сюда то, что тебе сообщат, здесь возможны тонкости.

464
02 июля 2003 года
WildAn
147 / / 19.05.2003
Сделал вот так Работает
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 с ней нельзя делать? У нее такого нет что-ли?
267
02 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn
Сделал вот так Работает
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
Скрывать обычно удобнее - второй раз загружать не надо, быстрее работает при последующих загрузках. Но если уверен, что второй раз не понадобится - выгружай смело.

464
02 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark


Молодец, все правильно ты сделал.

Есть еще Unload UserForm1
Скрывать обычно удобнее - второй раз загружать не надо, быстрее работает при последующих загрузках. Но если уверен, что второй раз не понадобится - выгружай смело.


Благодарю. А вот такой небольшой вопросик: как сделать, чтобы макрос запускался при открытии файла? Как бы автозапуск

267
02 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn

Благодарю. А вот такой небольшой вопросик: как сделать, чтобы макрос запускался при открытии файла? Как бы автозапуск



Есть два способа:
Или разместить в обычном модуле макрос с названием
Auto_Open, или разместить в модуле книги макрос Workbook_Open.

Отличие между ними состоит в следующем:
Workbook_Open. Он запускается и при открытии "руками" и при открытии программно (с помощью Workbooks.Open) - если только перед этим не были отключены обработчики ошибок командой Application.EnableEvents = False.

Auto_Open. Запускается только при открытии руками, зато не отключается .EnableEvents

Скорее всего, тебе все равно, какой использовать. Я обычно использую Auto_Open. Чтобы иметь возможность открывать подобные файлы без запуска, у меня есть файлик с Workbooks.Open (я не очень люблю отключать-включать обработчики событий, использую это только в самых крайних случаях).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог