防止减法出现在公式栏中(Excel 2010,VBA)

Preventing subtraction to appearing in formula bar (Excel 2010, VBA)

寻求帮助! 你好, 我几乎完成了一个项目,但有一部分我不明白 我有一个 + 和一个 - 按钮,用于将左侧单元格的金额添加到右侧的总单元格(示例中为 54)(显示在下面的 link 中) 此外,+ 被按下的次数也在最远的单元格上计算(本例中为 2)

根据我编写的以下代码:

Range("L8").FormulaLocal = "=" & Replace(Range("L8").FormulaLocal, "=", "") & "+" & Range("G8")

问题是,使用相同的代码,使用减法,我不想在公式栏中看到它,因为它最终变成了: =29+29+29-29-29+29...(第二张图片)

我只想保留优点。上面提到的代码中有什么我可以更改的,虽然不会显示减法,也不会删除已经存在的整个公式

谢谢!

我的部分 excel sheet 为了更好地理解:

我不想在公式栏中看到的内容:

首先,你截图中的值不应该是58,而不是54吗?


接下来,单元格真的需要包含公式吗?正如@teylyn 提到的,只需在 VBA 中进行计算并设置单元格的值。例如。对于 + 按钮:

Range("L8").Value = Range("L8").Value + Range("G8").Value


最后,如果您确实需要保留公式,并且您知道单元格 G8 中的值(添加或减去的值)在单击 +- 按钮之间永远不会改变,您可以先增加计数器(我假设它是单元格 M8),然后使用它的值来构建公式。

虽然您想要添加一些错误捕获,但它可能类似于以下内容。此外,如果您可以确保计数器永远不会为负,则可以消除 ElseIf 部分:

Public Sub MinusButton_Click()
    Range("M8").Value = Range("M8").Value - 1
    Range("L8").FormulaLocal = GetCellFormula
End Sub

Public Sub PlusButton_Click()
    Range("M8").Value = Range("M8").Value + 1
    Range("L8").FormulaLocal = GetCellFormula
End Sub

Private Function GetCellFormula()
    Dim strFormula As String
    Dim intNum As Integer

    strFormula = "="

    If Range("M8").Value > 0 Then
      For intNum = 1 To Range("M8").Value
        strFormula = strFormula & Range("G8").Value & "+"
      Next intNum
    ElseIf Range("M8").Value < 0 Then
      For intNum = Range("M8").Value To 1 Step -1
        strFormula = strFormula & Range("G8").Value & "-"
      Next intNum
    End If

    strFormula = Left(strFormula, Len(strFormula) - 1) 'strip trailing symbol

    GetCellFormula = strFormula
End Function

否则,如果单元格 G8 中的值可能发生变化,您唯一的选择可能是对现有公式进行一些(可能)复杂的解析。如果是这样,请先尝试一下,如果您有任何问题,post 一个新的 SO 问题。