Public zStr As String = "" (при открытии файла). Кнопочно-нажимной макрос присваивает zStr значение = ActiveCell.Value
Public Function возвращает значение zStr. В теории.
На практике же ДАЖЕ при включённом Calculation = xlAutomatic Public Function возвращает zStr ТОЛЬКО если нырнуть в ячейку вывода. Т.е., автоматический пересчёт не работает.
Файл прилагаю. Незамысловатый код:
Код
Public zStr As String
Код
Sub Q1()
zStr = ActiveCell.Value
Beep
End Sub
Код
Public Function zStr_Value() As String
zStr_Value = zStr
End Function
Application.Volatile не помогает. Видимо, поможет только Worksheet_Change.
Помогает. Функция пересчитывается при изменении значения любой из ячеек. В макросе Q1 Вы значения ячеек не меняете.Добавьте после строки 2 в Q1 обратное присвоение.