Excel 2003:VBA语法在Excel 2010中导致问题 - 替代方案?

时间:2015-07-15 07:38:29

标签: excel vba excel-vba

我有一个旧的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中的某些配置来解决问题?

1 个答案:

答案 0 :(得分: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引用它们,问题就会消失并生成图表。