【发布时间】:2019-02-28 10:43:49
【问题描述】:
我试图在 Excel 中使用 VBA 通过将数据范围向下移动一行来抵消一系列图表(即第 1 周将是 A:74 和 C:74,第 2 周将是 A:75 和 C:75等)
我是 VBA 的新手,我认为一个简单的 Offset 命令可以满足我的需求,但我编写的所有代码都不会无错误地运行。
以下是我尝试的一些代码示例:
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SetSourceData Source:=Offset(1, 0)
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.Offset(1, 0).Select
我预计活动图表或单元格的范围会偏移 1 行 0 列。
但是,第一次尝试就报错了:
编译错误:
子或函数未定义
第二次尝试报错:
编译错误:
找不到方法或数据成员
由于我查看的大多数其他页面都涉及为偏移函数设置特定的单元格范围,因此不确定该去哪里出错,我需要它来忽略硬编码范围并动态查看当前图表选择的范围和只需将其全部向下移动,基本上是从第 2 周到第 8 周到第 3 周到第 9 周。
任何帮助将不胜感激!
【问题讨论】:
-
Offset是Range对象的属性。因此,您需要使用范围变量定义源数据,然后对其进行偏移。 -
您正在使用的范围可能是您范围中最后使用的行吗?如果是这样,您可以让您的图表根据该条件不断更新。虽然如果是这种情况,我想指出您不需要 VBA 来执行此操作。您可以使用
OFFSETexcel sheet equation 来获得相同的相似结果 -
所以我试着充实一点,下面是我放在一起定义数据源然后使用 Range.Offset 函数:Worksheets("Trend Charts").Activate ActiveSheet。 ChartObjects("Chart 1").Activate Range.Offset(1, 0).Activate 它产生了错误“Argument not optional”。这些将是我要更新的每个表的最后一行,但 Offset 函数看起来不能处理我正在设置的字段值。
-
奇怪的是,被调试的似乎引用了黄色宏的最顶行: Sub Macro2() 不确定这意味着什么,但是我认为下面的代码应该可以工作:ActiveChart.SetSourceData Source :=Range.Offset(1, 0).Select