Доброе утро! Прошу помочь в решении следующей проблемы.
Есть простой макрос - при котором автофигура треугольник - немного движется вправо при каждом пересчете листа.
Как заставить этот макрос с событием Calculate - срабатывать не при каждом пересчете листа, а например при каждом третьем?
Мне видится примерно такое решение: В начале макроса - идет вычисление аналогичное формуле СЛУЧМЕЖДУ(1;3). Если выпадает 3, то макрос выполняется. Если выпадают 1 или 2 - то макрос останавливается (и треугольник не двигается). Иными словами макрос - визуально будет срабатывать - как бы выборочно (хотя аналог СЛУЧМЕЖДУ - будет работать при каждом пересчете).
Доброе утро! Прошу помочь в решении следующей проблемы.
Есть простой макрос - при котором автофигура треугольник - немного движется вправо при каждом пересчете листа.
Как заставить этот макрос с событием Calculate - срабатывать не при каждом пересчете листа, а например при каждом третьем?
Мне видится примерно такое решение: В начале макроса - идет вычисление аналогичное формуле СЛУЧМЕЖДУ(1;3). Если выпадает 3, то макрос выполняется. Если выпадают 1 или 2 - то макрос останавливается (и треугольник не двигается). Иными словами макрос - визуально будет срабатывать - как бы выборочно (хотя аналог СЛУЧМЕЖДУ - будет работать при каждом пересчете).Grell
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]
? [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
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