Excel VBA устанавливает значение по умолчанию из пользовательской функции только один раз - PullRequest
1 голос
/ 27 сентября 2019

Я хочу установить значение ячейки по умолчанию для результатов пользовательской функции.

Когда ячейка имеет свое значение, она никогда не должна изменяться.

Как я могу либо:

  • Проверить, имеет ли значение вызывающая ячейка?из того, что я видел, если вы тестируете Application.Caller.Value, он повторно оценивает ячейку, вызывающую функцию снова.Я попытался передать текущее значение, но оно идет по кругу =myFunc(A1).

  • Немедленно удалите функцию, как только значение будет установлено.Я пробовал Cell.Value = Cell.Value, но он просто снова вызывает функцию.

  • Заблокируйте ячейку или сделайте ее read-only, добавьте какой-нибудь флаг никогда не вычислять меня снова.

, чтобы воссоздать проблему - установите группу ячеек на =NOW(), затем подождите немного и сделайте другую ячейку, и вы заметите, что все ячейки обновляются до настоящего момента, я хочу, чтобы моя функциязапустить только один раз.

все входные данные с благодарностью получены

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

не уверен относительно вашей точной цели, но вы можете попытаться поместить это в соответствующую область кода рабочей таблицы:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub

    If InStr(Target.Formula, "MyFunc") > 0 Then ' change "MyFunc" tou your actual function name
        Application.EnableEvents = False
        Application.Calculation = XlCalculation.xlCalculationManual
        Target.Value = Target.Value
        Application.EnableEvents = True
        Application.Calculation = XlCalculation.xlCalculationAutomatic
    End If
End Sub
0 голосов
/ 27 сентября 2019

сойка, поговорим о резиновой утке.

Public Function SetOnce() As String

Application.Caller.Clear
SetOnce = Rnd(100)

End Function


edit: ok this kind of works, but the function remains

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...