【问题标题】:VBA Excel - Update Cell value based on other cell valueVBA Excel - 根据其他单元格值更新单元格值
【发布时间】:2018-03-26 23:31:03
【问题描述】:

我正在尝试根据另一个工作表中的其他范围单元格值在单元格范围中编写公式。公式如下:

ActiveSheet.Range("G14:G43").Formula = "=Worksheets("1ºperíodo").Range("V14:V43").Value"

但代码不起作用,并且出现语法错误。这必须与字符串有关,但我不知道如何解决它。 V14 的值必须等于G14 的值,直到最后一个单元格,即G14 的值等于V43 的值。除了语法错误之外,根据我的期望,公式是否正确?

【问题讨论】:

  • 试试这个:=Worksheets(""1ºperíodo")".Range(""V14:V43"").Value",假设工作表名称正确且没有拼写错误。 (在公式中,你需要加倍引号。否则 VBA 认为你在 .Formula 语句的末尾。)
  • @BruceWayne 我认为你在第一个括号 Bruce 的末尾有错字,应该是 "")
  • @BruceWayne 我使用它时遇到运行时错误“1004”。我之前已经试过了。
  • D'oh,很抱歉打错了 - 很好 @dwirony。试试...Formula = "=Worksheets(""1ºperíodo"").Range(""V14:V43"").Value"。 OP,您能否确认工作表名称实际上是1ºperíodo? (没有空格,有重音i 和度数符号)?另外,你到底得到了什么错误?最后,你想做什么?您正在使用.Formula 设置Value?这不是一个公式AFAIK。你的意思是...Formula = "=Worksheets(""1ºperíodo"").Range(""V14"").Value"?澄清你想要做的事情会有很大帮助。
  • @BruceWayne 是的,工作表名称正是那个。 '应用程序定义的或对象定义的错误'。我希望 G14 单元格包含公式 =V14,直到到达 G43 单元格 =V43。

标签: vba excel


【解决方案1】:

"=Worksheets("1ºperíodo").Range("V14:V43").Value"

不是公式。这是一个值。

如果您只想要静态值,那么只需分配值:

ActiveSheet.Range("G14:G43").Value = Worksheets("1ºperíodo").Range("V14:V43").Value

如果你想要一个实时公式,你需要从字符串中提取 vba 并使用 .Address 函数:

ActiveSheet.Range("G14:G43").Formula = "=" & Worksheets("1ºperíodo").Range("V14").Address(0,0,,1)

但以上可以简化为:

ActiveSheet.Range("G14:G43").Formula = "='1ºperíodo'!V14"

使用公式,我们只需要用相对引用引用第一个单元格,vba 就会对每一行进行更改。

【讨论】:

  • @PedroR。请点击答案旁边的复选标记将它们标记为正确。