【问题标题】:Preventing subtraction to appearing in formula bar (Excel 2010, VBA)防止减法出现在公式栏中(Excel 2010,VBA)
【发布时间】:2016-10-01 20:47:20
【问题描述】:

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

根据我制作的以下代码:

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

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

我只想保持积极的一面。上面提到的代码中是否有一些我可以更改但不会显示减法并且不会删除已经存在的整个公式的东西

谢谢!

部分我的 excel 表以便更好地理解:

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

【问题讨论】:

  • 您正在编辑一个公式。该公式将确定单元格中显示的结果。如果您不想在公式编辑器中看到整个公式,请在 VBA 中进行计算,然后只将结果写入单元格。您不能删除公式的一部分并期望结果与公式返回的结果不同。
  • 你所能做的就是在某个点添加一个换行符,这会隐藏右边的公式部分,因为大多数人只有足够高的公式栏来显示第一个行。

标签: excel vba formula subtraction


【解决方案1】:

首先,屏幕截图中的值不应该是 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 中的值可能发生变化,您唯一的选择可能是对现有公式进行一些(可能)复杂的解析。如果是这种情况,请先尝试一下,如果您有任何问题,请发布新的 SO Question。

【讨论】:

  • MJH,几乎做到了!数字按预期进行加减运算,公式栏中不再显示负数不是最好用的,我同意这一点)。你说的公式的复杂解析是什么?
  • 这将是您需要编写的一些新逻辑,它将解析现有公式,并根据您的要求对其进行修改。例如,假设单元格G8 的值为42,并且用户单击了+ 按钮。根据要求,您的逻辑可能必须考虑以下因素: 1. 单元格L8 目前没有公式; 2. 单元格L8 有一个公式,但它包含一个值420,您不想匹配; 3. 值是出现在公式的开头(需要匹配=42),还是出现在公式的后面(需要匹配+42);等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
相关资源
最近更新 更多