下班后自动擦除的功能。 vba

function that erase itself after work. vba

我想写这样的东西:

Public Function functionThatEraseHerself()
    functionThatEraseHerself = "here is some work"
    'ActiveCell.value = ActiveCell.value
End Function

现在怎么样

它必须如何

通常无法通过公式调用的用户定义函数更改单元格值。

然而,使用 Evaluate

有一个令人讨厌的解决方法
Option Explicit

'=functionThatEraseHerself()
Public Function functionThatEraseHerself()
    Dim ReturnValue As String
    ReturnValue = "here is some work"

    ' write the value to the cell that called this function
    Application.Caller.Parent.Evaluate "ReplaceWithValue(" & Application.Caller.Address & ", """ & ReturnValue & """)"
End Function

' helper procedure that is called by evaluate
Public Sub ReplaceWithValue(ByVal Cell As Range, ByVal Value As Variant)
    Cell.Value2 = Value
End Sub