1

Excel 2007 VBA を使用して、同じデータ シートに ScatterSmoothNoMarkers タイプのグラフを作成しています。ソース データは、開いているテキスト ファイルの数に依存しています。Xvalue は固定 @ 位置 A2: A200 です。また、系列値の列の 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 

どんな助けでも大歓迎です。

4

1 に答える 1

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)

この答えは、私が上で参照している関数ColumnLetterを定義しています(インデックスから文字を取得します)。

于 2012-10-03T12:39:54.400 に答える