我正在尝试设置一个宏,将值(例如10)添加到其中包含公式的现有单元格中。我希望细胞保持配方。
这是我到目前为止所做的:
Sub addvalue
'Keyboard Shortcut: Ctrl+Shift+A
ActiveCell.Formula = ActiveCell.Formula + 10
End Sub
这对我不起作用。当单元格只是一个数字时,它可以工作,但是当我试图调整的单元格是公式时,它不起作用。
如果我尝试调整的单元格包含=A1 + 4
并运行此宏,我希望在宏运行后它为=A1 + 14
。
答案 0 :(得分:5)
改变公式本身是有问题的。但您可以将+10
追加到最后,并使用以下内容获取=A1 + 4 + 10
ActiveCell.Formula = ActiveCell.Formula & "+ 10"
问题是ActiveCell.Formula
返回一个字符串,您无法在字符串中添加数字。您需要连接字符串和新部分。
修改
为了使它改变值而不是连接:
Sub addvalue()
'Keyboard Shortcut: Ctrl+Shift+A
Dim strsplit() As String
Dim i As Long
Dim dn As Boolean
dn = False
strsplit = Split(Mid(ActiveCell.Formula, 2), "+")
For i = LBound(strsplit) To UBound(strsplit)
If IsNumeric(strsplit(i)) Then
strsplit(i) = CDbl(strsplit(i)) + 10
dn = True
Exit For
End If
Next i
ActiveCell.Formula = "=" & Join(strsplit, "+") & IIf(dn, "", "+ 10")
End Sub
这可能不适用于所有情况,但对于简单的公式,它可以。