首页 > 解决方案 > 如何通过 VBA 为链接值添加或减去数字?

问题描述

我正在尝试自动化一些复制粘贴工作,我需要通过在现有报告中添加和减去更新的数字来做到这一点。

但我不应该破坏现有报告中的链接,例如,如果单元格是=link,它应该是=link - value

我已尝试使用该CStr功能,但仍然收到类型不匹配错误。

我也尝试不使用该CStr函数,即直接添加或减去值。

粘贴真值但断开链接:

Sheets(ComboBox1.Value).Range("I50").Value = Workbooks("2019 Actual Nav - Temmuz Linksiz").Worksheets(ComboBox1.Value).Range("E39").Value - OSmaas - TLmaas + TotPrim

Sheets(ComboBox1.Value).Range("I55").Value = Workbooks("2019 Actual Nav - Temmuz Linksiz").Worksheets(ComboBox1.Value).Range("E44").Value - TotPrim

Sheets(ComboBox1.Value).Range("I50").Value = "=+'\\ccfs1\Mali Isler\MIS\2019 Actual\Actual Navigator\[2019 Actual Nav - Temmuz Linksiz.xlsx]" + ComboBox1.Value + "'!$E$39-I52-I51" + CStr(TotPrim)

Sheets(ComboBox1.Value).Range("I55").Value = "=+'\\ccfs1\Mali Isler\MIS\2019 Actual\Actual Navigator\[2019 Actual Nav - Temmuz Linksiz.xlsx]" + ComboBox1.Value + "'!$E$43" - CStr(TotPrim)

输出应该是指定单元格中的值更新,但我不断收到类型不匹配错误。

PS:我尝试删除+ CStr(TotPrim)- CStr(TotPrim)部分,代码工作得很好。

标签: excelvba

解决方案


这里有一些更正将使您的代码正常工作:

  • 而不是.Value你应该使用.Formula或者.FormulaLocal如果你想使用语言特定的公式。
  • 在 VBA字符串连接中,使用&运算符而不是+.
  • 由于它是一个公式,因此您必须在字符串中包含运算符,否则解析器将抛出错误(而不是"E3" - TotPrim使用"E3-" & TotPrim)。

应用更正后,您的代码应如下所示:

Sheets(ComboBox1.Value).Range("I50").Value = Workbooks("2019 Actual Nav - Temmuz Linksiz").Worksheets(ComboBox1.Value).Range("E39").Value - OSmaas - TLmaas + TotPrim

Sheets(ComboBox1.Value).Range("I55").Value = Workbooks("2019 Actual Nav - Temmuz Linksiz").Worksheets(ComboBox1.Value).Range("E44").Value - TotPrim

Sheets(ComboBox1.Value).Range("I50").FormulaLocal = "=+'\\ccfs1\Mali Isler\MIS\2019 Actual\Actual Navigator\[2019 Actual Nav - Temmuz Linksiz.xlsx]" & ComboBox1.Value & "'!$E$39-I52-I51+" & CStr(TotPrim)

Sheets(ComboBox1.Value).Range("I55").FormulaLocal = "=+'\\ccfs1\Mali Isler\MIS\2019 Actual\Actual Navigator\[2019 Actual Nav - Temmuz Linksiz.xlsx]" & ComboBox1.Value & "'!$E$43-" & CStr(TotPrim)

注意:我在我的 Excel 上测试了这段代码(使用不同的路径),它可以工作。

希望这可以帮助。


推荐阅读