显示公式的VBA宏(Excel)

时间:2016-12-23 08:22:32

标签: excel vba excel-vba excel-formula

我的宏中有一个代码可以在我的 Cell(A5)结果中返回#name吗?

Range("A5").Select
ActiveCell.FormulaR1C1 = "=Application.Sum(Range(Cells(1, 5), Cells(20, 5)))"
End Sub

#name? 在我的VB代码中包含引号之间的文本公式

=Application.Sum(Range(Cells(1, 5), Cells(20, 5)))

如果我写的没有引号,它会返回结果。(范围之和)

ActiveCell.FormulaR1C1 = Application.Sum(Range(Cells(1, 5), Cells(20, 5))) 

但我需要在我的单元格中 A5 结果和公式,我是如何得到这个结果的。 也许这足以改变一些选择?

4 个答案:

答案 0 :(得分:4)

由于您想使用VBA代码在Cell A5中输入公式,因此您需要使用正确的参数:

Range(Cells(1, 5), Cells(20, 5))是VBA,如果您想将其作为Excel工作表单元格识别的公式,则需要使用R1C5:R20C5

此外,只需使用Application.Sum而不是Sum

您应该尝试避免使用SelectActiveCell并直接使用Range("A5").FormulaR1C1

所以只需使用下面的行代码:

Range("A5").FormulaR1C1 = "=Sum(R1C5:R20C5)"

答案 1 :(得分:2)

我发现使用

将公式添加到单元格更简单
 Sub addFormula()

  Dim ws As Worksheet 
  Set ws = Worksheets("Sheet1")

    With ws
        .Range("A5").NumberFormat = "General" 'This formats A5 as general
        .Range("A5").Formula = "=SUM(F1:F20)"
    End With

 End Sub

所有这一切都是将公式输入到单元格A5

答案 2 :(得分:1)

如果您希望单元格中的公式指向您在VBA代码中定义的某个范围,则可以使用

Range("A5").FormulaR1C1 = "=Sum(" & Range(Cells(1, 5), Cells(20, 5)).Address(, , xlR1C1) & ")"

答案 3 :(得分:0)

如果我理解正确,您希望在A5 中显示公式和结果。 如果是这样,请使用

Dim aux As Variant
aux = Application.Sum(Range(Cells(1, 5), Cells(20, 5)))
ActiveCell.Value = "Application.Sum(Range(Cells(1, 5), Cells(20, 5))) : " & CStr(aux)

此代码可能会得到改进(使用Sum代替Application.Sum,例如。)