我的 excel 文件有 3 种不同类型的 VBA 函数。在工作表中,我想显示来自已定义名称函数的值。最初我使用此代码将公式转换为字符串:
Function EvaluateString(strTextString As String)
Application.Volatile
EvaluateString = Evaluate(strTextString)
End Function
这个函数被放置在一个单独的模块中。这样做的问题是它在每个模块中运行,导致我的其他模块的运行时间非常慢。
我尝试将此功能放在模块本身中,但它不起作用。它给了我一个错误“只有注释可能出现在 End Sub、End Function 或 End Property 之后”。
这是我收到提示时的代码
Sub PasteAsText()
Dim lastRow As Long
lastRow = Worksheets("Data_Column").Cells(Rows.Count, 1).End(xlUp).Row
Function EvaluateString(strTextString As String)
Application.Volatile
EvaluateString = Evaluate(strTextString)
End Function
Worksheets("Data_Column").Range("D1:D" & lastRow).Clear
Worksheets("Data_Column").Range("C1:C" & lastRow).Copy
Worksheets("Data_Column").Range("D1:D" & lastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("Data_Column").Range("D1:D" & lastRow).NumberFormat = "@"
Worksheets("Data_Column").Select
End Sub
答案 0 :(得分:0)
要以文本形式查看公式,您可以使用 FormulaText()
函数,如 this URL 中所述。
因此,您可以简单地执行以下操作,而不是您的函数 PasteText()
:
Destination = FormulaText(Source) // simple Excel OR
Destination.Value = Application.WorkSheetFunction.FormulaText(Source.Value) // VBA