Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборочное срабатывание макроса с событием Calculate - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выборочное срабатывание макроса с событием Calculate (Макросы/Sub)
Выборочное срабатывание макроса с событием Calculate
Grell Дата: Пятница, 24.03.2017, 02:16 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 113
Репутация: 0 ±
Замечаний: 60% ±

Excel 2007
Доброе утро!
Прошу помочь в решении следующей проблемы.

Есть простой макрос - при котором автофигура треугольник - немного движется вправо при каждом пересчете листа.

Как заставить этот макрос с событием Calculate - срабатывать не при каждом пересчете листа, а например при каждом третьем?

Мне видится примерно такое решение:
В начале макроса - идет вычисление аналогичное формуле СЛУЧМЕЖДУ(1;3). Если выпадает 3, то макрос выполняется. Если выпадают 1 или 2 - то макрос останавливается (и треугольник не двигается).
Иными словами макрос - визуально будет срабатывать - как бы выборочно (хотя аналог СЛУЧМЕЖДУ - будет работать при каждом пересчете).
К сообщению приложен файл: 86535.xls (39.0 Kb)
 
Ответить
СообщениеДоброе утро!
Прошу помочь в решении следующей проблемы.

Есть простой макрос - при котором автофигура треугольник - немного движется вправо при каждом пересчете листа.

Как заставить этот макрос с событием Calculate - срабатывать не при каждом пересчете листа, а например при каждом третьем?

Мне видится примерно такое решение:
В начале макроса - идет вычисление аналогичное формуле СЛУЧМЕЖДУ(1;3). Если выпадает 3, то макрос выполняется. Если выпадают 1 или 2 - то макрос останавливается (и треугольник не двигается).
Иными словами макрос - визуально будет срабатывать - как бы выборочно (хотя аналог СЛУЧМЕЖДУ - будет работать при каждом пересчете).

Автор - Grell
Дата добавления - 24.03.2017 в 02:16
KuklP Дата: Пятница, 24.03.2017, 07:39 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
?
[vba]
Код
Private Sub Worksheet_Calculate()
    If Int((3 * Rnd) + 1) = 3 Then
        ActiveSheet.Shapes.Range(Array("Isosceles Triangle 1")).Select
        Selection.ShapeRange.IncrementLeft 24
        Selection.ShapeRange.IncrementTop 1.5
        Range("D11").Select
    End If
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение?
[vba]
Код
Private Sub Worksheet_Calculate()
    If Int((3 * Rnd) + 1) = 3 Then
        ActiveSheet.Shapes.Range(Array("Isosceles Triangle 1")).Select
        Selection.ShapeRange.IncrementLeft 24
        Selection.ShapeRange.IncrementTop 1.5
        Range("D11").Select
    End If
End Sub
[/vba]

Автор - KuklP
Дата добавления - 24.03.2017 в 07:39
K-SerJC Дата: Пятница, 24.03.2017, 07:43 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
так?
[vba]
Код
Public tD As Integer

Private Sub Worksheet_Calculate()
   tD = tD + 1
   If tD / 3 = Int(tD / 3) Then
   ActiveSheet.Shapes.Range(Array("Isosceles Triangle 1")).Select
    Selection.ShapeRange.IncrementLeft 24
    Selection.ShapeRange.IncrementTop 1.5
    Range("D11").Select
    End If
End Sub
[/vba]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениетак?
[vba]
Код
Public tD As Integer

Private Sub Worksheet_Calculate()
   tD = tD + 1
   If tD / 3 = Int(tD / 3) Then
   ActiveSheet.Shapes.Range(Array("Isosceles Triangle 1")).Select
    Selection.ShapeRange.IncrementLeft 24
    Selection.ShapeRange.IncrementTop 1.5
    Range("D11").Select
    End If
End Sub
[/vba]

Автор - K-SerJC
Дата добавления - 24.03.2017 в 07:43
KuklP Дата: Пятница, 24.03.2017, 07:46 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
If tD / 3 = Int(tD / 3) Then
Может проще
[vba]
Код
If tD mod 3 =0
[/vba]? yes


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
If tD / 3 = Int(tD / 3) Then
Может проще
[vba]
Код
If tD mod 3 =0
[/vba]? yes

Автор - KuklP
Дата добавления - 24.03.2017 в 07:46
Grell Дата: Пятница, 24.03.2017, 08:54 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 113
Репутация: 0 ±
Замечаний: 60% ±

Excel 2007
Коды работают.
Всем спасибо.
 
Ответить
СообщениеКоды работают.
Всем спасибо.

Автор - Grell
Дата добавления - 24.03.2017 в 08:54
K-SerJC Дата: Пятница, 24.03.2017, 09:48 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Может проще

ну так то да...
но на вскидку так тоже работает :-)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
Может проще

ну так то да...
но на вскидку так тоже работает :-)

Автор - K-SerJC
Дата добавления - 24.03.2017 в 09:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выборочное срабатывание макроса с событием Calculate (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!