Редактировать: вы пытались использовать UDF для изменения некоторых полей и согласились с тем, что нужно использовать какую-то модификацию события вместо того, чтобы запускать код из кнопки в комментариях к @Mathieu Guindon.Поскольку UDF запускает код только тогда, когда некоторые ячейки пересчитываются, предполагается, что вы должны запускать код, когда некоторые ячейки на листе меняются либо вручную, либо по какой-либо формуле.Предлагаемые ниже решения запускают код при изменении значения ячейки F1.Вы можете изменить его в соответствии со своими потребностями.
Old Post: Это не чистый способ, но может быть назван грязной идеей обходного пути.Предположим, что вы хотите изменить значение ячейки F1 для выполнения кода, можете попробовать
Public F1Val As Variant
Private Sub Worksheet_Activate()
F1Val = Range("F1").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If F1Val <> Range("F1").Value Then
Range("A1:B3").Value = 10
F1Val = Range("F1").Value
End If
End Sub
Осторожно : Конечно, это будет иметь неприятные последствия, если ячейка F1 связана с формулой с изменением ячеек.
Альтернативно, если достаточно только ручного изменения ячейки F1 для выполнения кода, тогда можно просто попробовать
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F1")) Is Nothing Then
Range("A1:B3").Value = 10
End If
End Sub