我是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
答案 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工作表公式一样,只能将值返回给单元格.................最好的值可以影响条件格式。