Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2012, 17:55   #1
deemka777
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 38
Вопрос цикл vba

Как вывести промежуточное значение при выполнении макроса.
Например что бы я видел что выполнено 5 циклов(из 26), и вывести это значение в TextBox1 userformы.
запускаю из userformы.


Private Sub CommandButton1_Click()

For i = 1 To 26
...
TextBox1.Caption = i

Next

End Sub

так получается у меня что выводится только последнее значение 26.
как сделать чтоб показывало 1;2;3;....;26???

Я так понимаю, что нужно сделать какое-то обновление TextBox1 в цикле.
deemka777 вне форума Ответить с цитированием
Старый 09.09.2012, 19:16   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

А если пошагово?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.09.2012, 21:55   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
Dim i&

Private Sub CommandButton1_Click()
i = i + 1
TextBox1 = i
If i > 26 Then i = 0: TextBox1 = ""
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 09.09.2012, 23:32   #4
deemka777
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 38
По умолчанию

Книга102.rar

когда выполняется макрос, не выводится промежуточное значение.
т.е. когда прошёл 1 цикл, вывести значение 1, когда 2-й, вывести 2 значение. и так далее по цепочке.

у меня получается что я вижу только последнее значение. конечное 26

Нужно именно визуальное отображение текущего выполнения макроса. Скажем выполнено 7 из 26.
deemka777 вне форума Ответить с цитированием
Старый 10.09.2012, 00:29   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Точно, нужно обновление.
Код:
Private Sub CommandButton1_Click()
    Dim i As Byte
    Dim j As Integer

    For i = 1 To 26
        For j = 1 To 1000
            ThisWorkbook.Sheets(1).Cells(1, 1) = 1
        Next j
        TextBox1 = i
        Me.Repaint
    Next i

End Sub
Или вместо Me.Repaint сработает обычное DoEvents - так заодно можно будет и форму в этот момент подвигать
Правда и код заодно на паузу поставить...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 10.09.2012 в 00:36.
Hugo121 вне форума Ответить с цитированием
Старый 10.09.2012, 10:59   #6
deemka777
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 38
По умолчанию

Спасибо. Отличное решение.
deemka777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA. Нужно прокрутить цикл для нескольких листов книги Julit Microsoft Office Excel 14 29.12.2010 17:19
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34