【问题标题】:Variable of source of data for chart In Excel With VBA使用VBA在Excel中图表数据源的变量
【发布时间】:2014-06-22 01:06:46
【问题描述】:

我正在使用 Excel 2007 VBA 在同一数据表中创建 ScatterSmoothNoMarkers 类型图表。我的源数据取决于打开的许多文本文件。 Xvalue 在位置 A2: A200 是固定的。 Series 值的列 ID 会发生变化。

如果我打开 2 个文件,我的源数据将是:Range(A2:A200, F2:G200)。要打开 3 个文件,我的源数据将是: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 

任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您不能在" 标记内引用变量。 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(它从索引中获取字母)。

    【讨论】:

    • 非常感谢 Felix 和 Enderland 的帮助。我使用 Endeland 的输入来创建 ColumnLetter 并且它起作用了。它为我节省了很多时间。稍后我会试试 Felix 的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2021-04-19
    • 2011-11-22
    相关资源
    最近更新 更多