图表数据源的变量在Excel中使用VBA

时间:2012-10-03 05:05:03

标签: excel vba excel-vba

我正在使用Excel 2007 VBA在同一数据表中创建ScatterSmoothNoMarkers类型图表。我的源数据取决于打开的许多文本文件。 X值固定在@位置A2:A200。系列值的列ID将被更改。

如果我打开2files,我的源数据将是:Range(A2:A200, F2:G200)。要打开3files,我的源数据将是:Range(A2:A200, H2:J200) 等等......所以我需要用变量替换那些列的ID。但是当我设置数据源时出错了。 这是我的代码:

Sub addChart()
Dim n as integer ‘files count and also the number of columns for chart1 
Dim intColStart, intColStop as integer  ‘number of columns for chart 1
intColStart = n*2+2  ‘this is a formula to find the ID of the start column of chart1
intColStop = n*3+1  ‘this is a formula to find the ID of the stop column of chart1
…..
With ActiveSheet.ChartObjects.Add _
         (Left:=100, Width:=375, Top:=75, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A2:A200, intColStart:intColStop ")  ‘’’’’PROBLEM RIGHT HERE‘’’’’’’
        .Chart.ChartType = xlXYScatterSmoothNoMarkers
……..
End With
End Sub 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您无法在"标记内引用变量。 VBA不知道要转换它们,所以它认为你正在设置Range包括你真正试图使用​​的文本

A2:A200, intColStart:intColStop 

这对VBA没有任何意义。

为什么不改变行

    .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A2:A200, intColStart:intColStop ") 

    .Chart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(2,2), Cells(200,intColStop))

如果我误解了您的兴趣,我会建议您手动创建Range String输入的内容 - 使用以下内容:

dim rngStr as String
dim firstColStr as String
dim secondColStr as String
firstColStr = ColumnLetter(intColStart)
secondColStr = ColumnLetter(intColStop)
rngStr = "A2:A200," & firstColStr & ":2:" & secondColStr & "200"
...

.Chart.SetSourceData Source:=Sheets("Sheet1").Range(rngStr)

This answer定义了我上面引用的函数ColumnLetter(它从索引中获取了字母)。