Страницы: 1
RSS
Эмуляция нажатия ENTER, Вывод сообщение через MsgBox без последующего нажатия ENTER
 
Добрый день!

Написала макрос для обработки группы XML файлов. Для большей информативности работы программы хотелось бы в процессе работы выводить дополнительную информацию, например, номер обрабатываемого файла.
Чтобы не нажимать каждый раз на ОК, попробовала использовать SendKeys. До конца дорабатывает, но изменения значения h не видно. Если SendKeys убрать - работает, как и ожидалось. подскажите, пожалуйста, в чем ошибка.
Код
Sub aaa()
     n_All_fl = 5
     h = 0

        For s = 1 To n_All_fl
            h = h + 1
            MsgBox h
            Application.SendKeys "{ENTER}"
        Next 

    MsgBox "???"
End Sub
 
ошибка в том, что строчка
Application.SendKeys "{ENTER}"
будет выполнена компилятором ТОЛЬКО после того, как будет закрыто окно с сообщением

выход:
1. есть MsgBox с секундомером, закрывающийся самостоятельно, через некоторое время
2. информацию и № обрабатываемого файла можно показать в Application.StatusBar (серая строка внизу окна Exсel)
Изменено: Ігор Гончаренко - 17.12.2019 13:15:29
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
посмотрите тут может и не потребуется кнопку жать.
По вопросам из тем форума, личку не читаю.
 
Luna2903, здравствуйте!
Цитата
Luna2903: Для большей информативности работы программы хотелось бы в процессе работы выводить дополнительную информацию, например, номер обрабатываемого файла
использование Application.SendKeys зачастую является очень плохой идеей, а вам для этого отлично подойдёт StatusBar
Код
Sub aaa()
n_All_fl = 5
h = 0
 
        For s = 1 To n_All_fl
            h = h + 1
            Application.StatusBar = h
        Next
 
Application.StatusBar = False
End Sub
Название темы: Отобразить прогресс выполнения макроса
Изменено: Jack Famous - 17.12.2019 13:18:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Вместо MsgBox вводить (и закрывать с задержкой) форму с Label
Код
            Beep
            With ufForm1: .Show: .label1.Caption = h: End With 
            Application.Wait Time:=Now + TimeValue("0:00:01")
            Unload ufForm1
 
Спасибо всем !
 
До кучи: MsgBox, автоматически закрываемый по истечении указанного времени
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх