【问题标题】:Excel 2003: VBA Syntax causes problems in Excel 2010 - Alternatives?Excel 2003:VBA 语法导致 Excel 2010 出现问题 - 替代方案?
【发布时间】:2015-07-15 18:54:36
【问题描述】:

我有一个旧的 VBA 脚本 (Office 2003) 需要修复,它在 Office 2010 中失败。 该问题似乎是由用于引用工作表和单元格的语法引起的。

ActiveChart.SeriesCollection(1).XValues = _
    "=EP!Z1S2:Z1S" & Mid(Str(Schritte + 2), 2)

    With ActiveChart.SeriesCollection(1)
       .Values = "=EP!Z3S2:Z3S" & Mid(Str(Schritte + 2), 2)
       .Name = "=EP!Z3S1"
    End With

有没有使用“=Sheet!CellRange”的替代方法? 或者可以通过更改Office / Excel中的一些配置来解决问题吗?

【问题讨论】:

  • 它是如何失败的?有任何错误信息吗?
  • Schritte 持有什么价值?
  • 是的。出现 VBA 错误消息:“运行时 - 错误 1004,应用程序或对象定义错误”...?:-| ...脚本停止。
  • 那些单元格引用似乎是非 EN-US xlR1C1 样式。 2010在什么语言包下,2003在什么语言包下?
  • @Jeeped:这是一个通过输入框询问的整数。例如:11 => "=EP!Z3S2:Z3S13"。我觉得没关系。脚本的停止(在 Excel 2010 中)似乎是由使用的语法引起的。

标签: vba excel


【解决方案1】:

您需要提供编码为Range objects 和/或Range.Cells property 的单元格范围,可能使用Range.Resize property

dim ws as worksheet
set ws = worksheets("EP")

ActiveChart.SeriesCollection(1).XValues = _
  ws.range("Z1S2:Z1S" & Mid(Str(Schritte + 2), 2))

With ActiveChart.SeriesCollection(1)
   .Values = ws.cells(3, 2).resize(1, int(Mid(Str(Schritte + 2), 2)))    '=EP!Z3S2:Z3S" & Mid(Str(Schritte + 2), 2)
   .Name = ws.cells(3, 1)    '=EP!Z3S1
End With

当我使用严格描述范围的字符串创建图表时,我收到编译错误:类型不匹配。一旦我将字符串包裹在Range 中或使用.Cells 更直接地引用它们,问题就消失了,并且生成了图表。

【讨论】:

  • 非常感谢您的努力和时间。我真的很感激。
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多