将公式转换为字符串 vba

时间:2021-05-10 03:16:39

标签: excel vba

我的 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

1 个答案:

答案 0 :(得分:0)

要以文本形式查看公式,您可以使用 FormulaText() 函数,如 this URL 中所述。

因此,您可以简单地执行以下操作,而不是您的函数 PasteText()

Destination = FormulaText(Source)                                           // simple Excel OR
Destination.Value = Application.WorkSheetFunction.FormulaText(Source.Value) // VBA