Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
25.04.2024, 06:47:19

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 243 Сообщений в 5 458 Тем от 6 761 Пользователей
Последний пользователь: Halfdoor
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Перемотка счетчика
Страниц: [1]   Вниз
Печать
Автор Тема: Перемотка счетчика  (Прочитано 3671 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mv6677
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 16


Просмотр профиля
« : 18.01.2017, 18:11:55 »

Добрый вечер.
Подскажите - как решить вопрос.

Есть макрос простого счетчика, который каждую миллисекунду - прибавляет в ячейку А1 - единицу.
Когда счетчик достигает величины 1000 - значение перематывается на 0 и счет заканчивается.

Как заставить макрос - перемотать счетчик - на нулевое значение и запустить заново ?
(В общем - чтобы он до бесконечности прокручивался).
Записан
Perfect2You
Постоялец
***

Репутация: +12/-0
Офлайн Офлайн

Сообщений: 106


Просмотр профиля E-mail
« Ответ #1 : 18.01.2017, 18:45:13 »

Зациклить. Только предусмотреть какое-то прерывание, чтоб выйти можно было, не обрушивая EXCEL.
Записан
mv6677
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 16


Просмотр профиля
« Ответ #2 : 18.01.2017, 19:28:10 »

Perfect2You, я знаю что зациклить.
Вопрос-  как это зацикливание в макросе прописать ?
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 18.01.2017, 19:54:53 »

Можно так, в лоб:
Код: (vb)
Sub mac1()
    Dim i As Integer
    Range("A1") = 0
    For i = 1 To 1000
        Range("A1") = Range("A1") + 1
        Sleep 10
        DoEvents
    Next i
    Call mac1
End Sub

хотя я бы сделал, скорее всего так:
Код: (vb)
Sub mac1()
    Dim i As Integer
    Range("A1") = 0
    For i = 1 To 1000
        Range("A1") = Range("A1") + 1
        Sleep 10
        DoEvents
    Next i
    Application.OnTime Now, "mac1"
End Sub

Ну а т.к. в цикле есть DoEvents, то прерывание в любой момент можно сделать при помощи Ctrl+Break
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
mv6677
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 16


Просмотр профиля
« Ответ #4 : 18.01.2017, 20:28:46 »

The_Prist, спасибо - оба варианта работают.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru