Запустите этот Worksheet_Calculate при открытии книги без запуска моего макроса

Что вы ищете, это функция clamp(), которая принимает 3 аргумента: значение, желаемое минимальное значение и желаемое максимальное значение.

Свойства определяются декоратором @property. Для тестирования, если значение, присвоенное свойству, является номером, я использую модуль numbers. Вот пример кода:

import numbers

def clamp(v, _min, _max):
    return max(min(v, _max), _min)

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    @property
    def x(self):
        return self.__x

    @x.setter
    def x(self, value):
        if not isinstance(value, numbers.Number):
            raise AttributeError()
        self.__x = clamp(int(value), 0, 10)

    @property
    def y(self):
        return self.__y

    @y.setter
    def y(self, value):
        if not isinstance(value, numbers.Number):
            raise AttributeError()
        self.__y = clamp(int(value), 0, 10)

p = Point(1,12)
print(p.x, p.y) # output "1 10"
p.x = 25
p.y = -5
print(p.x, p.y) # output "10 0"
0
задан Pᴇʜ 21 January 2019 в 07:33
поделиться

1 ответ

Я думаю, что это может решить вашу проблему:

В этой рабочей книге:

Private Sub Workbook_Open()
    Worksheets("NameHere").Range("A1") = True
End Sub

В окне кода целевого листа: [ 114]

Private Sub Worksheet_Calculate()
    If Worksheets("NameHere").Range("A1") Then MacroRuns
    Worksheets("NameHere").Range("A1") = False
End Sub
0
ответ дан Michel Excel 21 January 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: