0

データを抽出して、「グラフ」と呼ばれる新しいタブにグラフとしてデータを表示したいExcelシートがあります。

グラフは非常に簡単に生成できますが、ループが完了するたびにインクリメントできる設定位置を指定するための適切で簡単な方法が見つからないため、グラフを作成すると、すべてが積み重ねられます。

私はコマンドを試してきactivechart.locationましたが、正しいコマンドを見つけることができないようです。

これが現時点での私のコードです。これにより、グラフが生成され、現在のExcelシートに出力されます。

Dim i As Integer
i = 30
Start = Start + 2 (global variable)
finish = finish + 2 (global variable)
For i = 30 To 56
   Range("ci:bbi").Select
   ActiveSheet.Shapes.AddChart.Select
   ActiveChart.HasTitle = True
   ActiveChart.ChartTitle.Text = Cells(i, 2).Value
   ActiveChart.SourceData Source:=Range(Cells(i, Start), Cells(i, finish))
   ActiveChart.ChartType = xlColumnStacked
Next

私はvbaをまったく使用したことがなく、この小さなコードブロックでさえ多くの労力を費やしています。私の質問は、チャートを作成して配置するときに、各チャートの位置を指定するために、ここに何を入力できるかということです。できれば、新しい変数をインクリメントできます。

前もって感謝します

編集:言及するのを忘れました、私はページを複数回使用する必要があるため、マクロでこれを行うことはできません。マクロを使用すると、グラフ名がそれらを識別するために使用されるため、後でグラフを追跡することができなくなりますチャート名がどんどん高くなっていく第1世代のグラフ。

4

1 に答える 1

1

これを試して

Sub Sample()
    Dim i As Long, nTop As Long, nLeft As Long
    Dim strChrt As String

    i = 30: nLeft = 20: nTop = 20
    
    Start = Start + 2: finish = finish + 2
    
    For i = 30 To 56
       ActiveSheet.Shapes.AddChart.Select
       ActiveChart.HasTitle = True
       ActiveChart.ChartTitle.Text = Cells(i, 2).Value
       ActiveChart.SetSourceData Source:=Range(Cells(i, Start), Cells(i, finish))
       ActiveChart.ChartType = xlColumnStacked
       
       strChrt = Trim(Replace(ActiveChart.Name, ActiveSheet.Name, ""))

       ActiveSheet.Shapes(strChrt).Left = nLeft
       ActiveSheet.Shapes(strChrt).Top = nTop

       '~~> Increment the next `Top` placement for the chart
       nTop = nTop + ActiveSheet.Shapes(strChrt).Height + 20
    Next
End Sub

新しく作成されたグラフの位置を定義する2 つの変数nTopを作成しました。nLeft

于 2012-07-10T14:36:52.487 に答える