如何在不更改公式的情况下更改单元格的文本?

时间:2014-03-23 21:30:14

标签: excel vba excel-vba

我是VBA的新手。这个问题已被提出并回答here,但答案似乎太过于苛刻。是否有更好的方法来更改单元格的值而不更改其中的基础公式?我已尝试过target.text ="已更改"但这给了我一个" Object Required"

的错误

我问的原因是,在UDF中,您可以更改单元格的显示,但公式仍然存在。我怎么能在UDF之外做到这一点?

编辑:

在下面的示例中,myudf和my_udf似乎做了同样的事情,每个人都告诉我要做NumberFormat。问题是Numberformat将永久更改单元格。如果您输入" = my_udf()"在A2中,然后返回并在那里键入一些随机文本。除非您返回并手动重新格式化单元格(或输入excel内置函数),否则它将显示" ThisThatThere"。

模块1

Function myudf()
    myudf = "ThisThatThere"
End Function

Function my_udf()
    my_udf = "Temporary"
End Function

的ThisWorkbook:

Sub Workbook_SheetChange(ByVal sh As Object, ByVal target As Range)
    If target.HasFormula Then
        If LCase(target.Formula) Like "=my_udf(*" Then
            target.NumberFormat = "0;0;0;""ThisThatThere"""
        End If
    End If
End Sub

1 个答案:

答案 0 :(得分:2)

如果公式返回数值而不是文本值,则很容易。在单元格中放置公式,选择它并运行:

Sub ChangeText()
    Dim DQ As String, mesage As String
    DQ = Chr(34)
    mesage = DQ & "override" & DQ
    ActiveCell.NumberFormat = mesage & ";" & mesage & ";" & mesage & ";"
End Sub

UDF 本身就像非VBA工作表公式一样,只能将值返回给单元格.................最好的值可以影响条件格式。