Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142

Окно MsgBox с закрытием через время

05.03.2014, 11:06. Показов 20822. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форумчане.

У меня вопрос, как можно реализовать MsgBox, который либо можно нажать стандартно пользователем через "Да" допустим и одновременно сам же MsgBox может автоматически нажать ту же кнопку "Да" скажем через 5 секунд?

Просто MsgBox реализован понятное дело, хотелось бы, что бы некоторые из них сами закрывались через 5 секунд или же пользователь их закрывал. Кусок кода ниже:


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub CommandButton1_Click()
 
Dim i As Integer
Const TTL = "Проверка правильности ввода"
Dim Vibor As Integer
  
  For i = 0 To 31 Step 1
            
            If Worksheets("0").Cells(1, 4) = i Then
            
                  
                  If Worksheets("0").Cells(2, 1) = 100000 Then
                  Vibor = MsgBox(prompt:="Вы регистрируетесь за паролем:" & vbNewLine & vbNewLine & "Ильченко Никита Владимирович", Title:=TTL, Buttons:=vbYesNo + vbQuestion)
                  
                  Select Case Vibor
                  
                  Case Is = vbYes
                  Worksheets(i).Cells(2, 2) = "Ильченко"
                  Worksheets(i).Cells(2, 3) = Time
                  Application.ActiveWorkbook.Save
                  MsgBox ("Добрый день Никита Владимирович!" & vbNewLine & "Время прибытия: " & Time()), vbInformation, "Регистрация" '1 msgbox
                  
                  Case Is = vbNo
                  MsgBox ("Введите свой пароль регистрации"), vbExclamation, "Регистрация" '2 msgbox
                  
                  End Select
Конкретно нужно чтобы закрывались через 5 секунд два последних MsgBox.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2014, 11:06
Ответы с готовыми решениями:

MsgBox или UserForm с секундомером привыполнении макроса с автоматическим закрытием после выполнения
Добры день. Подскажите пожалуйста как прописать код, чтобы появлялся MsgBox или UserForm с секундомером привыполнении макроса с...

Как сделать, чтоб MsgBox, выдав сообщение, сам исчезал через заданное время?
Как сделать, чтоб MsgBox, выдав сообщение, сам исчезал через заданное время?

Добавляю запись в базу данных и юзеру через msgbox хочу сказать об этом, но получаю еррор msgbox 'Permission denied'
Добавляю запись в базу данных и юзеру через msgbox хочу сказать об этом, но получаю еррор msgbox 'Permission denied' В чем грабли?...

12
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
05.03.2014, 11:28
Рисуйте свою форму, используйте её. Закрытие по таймеру.
0
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
05.03.2014, 11:37  [ТС]
Форма своя нарисована, на ней есть два текстбокса и одна кнопка и все действия завязаны на этой кнопке, пользователь вводит данные в текстбокс (текстбокс привязан к ячейке в Екселе и данные сразу туда заносятся) и по нажатию кнопки собственно и происходят операции с данными, MsgBox находятся в листинге кнопки.
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
05.03.2014, 11:39
Если Ваш офис 32-битный и другого (64bit) пока не предполагается использовать с этим макросом, то можно задействовать Win32 API функцию MessageBox (MessageBoxA/MessageBoxW) + таймер можно тоже из Win32 API. Преимущества здесь таковы, что основной поток макроса не прервется на вызове сообщения а продолжит работу. На 64-bit это тоже можно реализовать (надо вникать в тонкости, которых я сейчас не знаю). А сделать код для работы и там, и там вне зависимости от системы - задача трудная.
2
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
05.03.2014, 12:23  [ТС]
Спасибо всем, пошарился в тырнете и нашел следующее решение:

1) Объявляется функция:
Visual Basic
1
2
3
4
5
6
7
Function MsgBoxExt(Prompt, Buttons, Title, SecondsToWait)
 
'Аналог MsgBox с возможностью автовыключения.
'Возвращает код нажатой клавиши или -1, если время ожидания истекло.
    MsgBoxExt = CreateObject("WScript.Shell").PopUp(Prompt, SecondsToWait, Title, Buttons)
 
End Function
2) Пишется собственно строка MsgBox-а

Visual Basic
1
Mg = MsgBoxExt("Доброго дня Никита Владимирович!" & vbNewLine & "Время прибытия: " & Time(), vbInformation, "Регистрация", 3)
Где последний параметр 3 - это время закрытия MsgBox-a.
2
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
05.03.2014, 12:55
Только эта штука в VBA работет коряво, т.е. обычно не работает. У Вас работает? У меня не закрывается.
Вот как vbs всегда работает исправно (у меня).
0
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
05.03.2014, 13:07  [ТС]
Вполне возможно, пока за полчаса тестов сбоев не было, буду дальше смотреть)

Добавлено через 7 минут
И да, работает нормально, на хорошем проце x64 на одной машине с 10 офисом без задержек, на слабой старой машине с x86 процом и 7 офисом помедленнее конечно, но существенных задержек не увидел, первый прогон цикла - небольшая задержка, все последующие нормально.
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
05.03.2014, 13:13
Главное чтоб msgbox закрывался.
У меня ни дома не работает, ни на работе (всюду 32 бита). И у многих других форумчан тоже. Поэтому я даже не упоминал этот попап.
Если у Вас будет всюду работать - считайте что повезло.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
06.03.2014, 00:45
Hugo121, у меня работает. А на каком офисе проверяешь?
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
06.03.2014, 01:55
2003 и 2007 32 бита.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.03.2014, 01:45
Написал функцию для решения этой проблемы: Авторские программы, библиотеки, надстройки и шаблоны
1
62 / 4 / 1
Регистрация: 27.04.2014
Сообщений: 100
28.05.2014, 16:36
Казанский, а возможно ли подправить код, чтобы выделенная по умолчанию кнопка нажималась в любом случае по истечению времени?
0
1 / 1 / 0
Регистрация: 27.02.2017
Сообщений: 18
10.03.2017, 20:54
Derjzemit,
У меня отлично отработало. Большой СПС.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2017, 20:54
Помогаю со студенческими работами здесь

Всплывающее окно с закрытием на куках
Здравствуйте! Как сделать всплывающее окошко и кнопкой закрыть? Что б когда пользователь нажал закрыть, то это окошко не показывалось n...

Всплывающее окно с закрытием на куках
Здравствуйте! Как сделать всплывающее окошко и кнопкой закрыть? Что б когда пользователь нажал закрыть, то это окошко не показывалось n...

Ошибка The type or namespace name 'MsgBox' does not exist in the class or namespace 'MsgBox.MsgBox' (are you missing an assembly reference?)
Есть Class Library, написанная на VB.NET. Компилирую, вставляю assembly в VB.NET, все работает. Вставляю в проект на C#, не работает. Делаю...

Модальное окно MsgBox в cmd
Доброго дня! Подскажите, как реализовать модальное окно MsgBox. Немодальное - понятно: for /f "usebackq" %%f in ( `mshta...

Как закрыть окно благодарности формы через определённое время
Добрых суток! Подскажите как закрыть окно " Заявка принята" чере опреденоные секунды xhr.onreadystatechange = function() { if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru