2017-01-16 9 views
0

のための入力としてレンジの保存に使用 - 私はそれは私が棒グラフで視覚化したいデータがA3とZ3の間にあることを私に告げる変数VBAはVBAでのマッチ操作後diagramm

Set rngSel = ActiveSheet.Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1)) 

範囲を取得(常に1つの行に)インスタンス化されます。私もこれを印刷することができます

MsgBox ("rngSel=" & rngSel.Cells.Address) 

しかし、今私はrngSelを使用して私のdiagrammの入力をしたいと思います。試しました

ActiveChart.SetSourceData Source:=Sheets("Diagramm 1").rngSel 

これは動作しません。 rngSelはx座標範囲(A3からZ3まで)を提供しますy値はA4からZ4までですrngSelオブジェクトに基づいて私のダイアグラム1にデータを取る方法を教えてください A3:Z4? ?指定しますが、動的にrngSelを使用して

全体のマクロ

Sub Aku() 
    Dim startIdx As Integer, endIdx As Integer 
    Set valRng = ActiveSheet.Range("AB3:LS3") 

    startIdx = Application.Match(CLng(Cells(2, 18).Value), valRng, 0) 
    endIdx = Application.Match(CLng(Cells(2, 22).Value), valRng, 0) 

    Set rngSel = ActiveSheet.Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1)) 

    MsgBox ("rngSel=" & rngSel.Cells.Address) 
    ActiveChart.SetSourceData Source:=rngSel.Resize(2), PlotBy:=xlRows 


End Sub 
+0

だけrngselから値を読み込むための1のときにこのマクロを実行している前提としています。またはActiveChart.SetSourceDataソース:= Sheets( "Diagramm 1")。範囲(rngSel.address) –

+0

確信していませんが、 "rngSel.Resize(2)"となる可能性があります – user3598756

+0

rngSelに格納されている範囲はA3からZ3までですが、チャートソースはa3からz4にする必要があります。nathanソリューションを使用すると、デバッグエラーが発生します。 – Sonnecken56

答えて

0

編集しさらにOPの明確化後

はこれを試してみてください。

Sub Aku() 
    Dim startIdx As Integer, endIdx As Integer 
    Dim rngSel As Range, valRng As Range 

    With ActiveSheet 
     Set valRng = .Range("AB3:LS3") 

     startIdx = Application.Match(CLng(Cells(2, 18).Value), valRng, 0) 
     endIdx = Application.Match(CLng(Cells(2, 22).Value), valRng, 0) 

     Set rngSel = .Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1)) 
    End With 
    Worksheets("Sheet 1").ChartObjects("Diagramm 1").Chart.SetSourceData Source:=rngSel.Resize(2), PlotBy:=xlRows 
End Sub 

それはアクティブシートがそれを行います

+0

デバッグステートメントでオブジェクト変数またはブロック変数が欠落しているというエラーがあります – Sonnecken56

+0

ActiveChart.SetSourceDataソース:= rngSel.Resize(2、)、PlotBy:= xlRows - しかしコンパイルはできますが、列ではなく範囲に行を追加するには - ? – Sonnecken56

+0

@ Sonnecken56、あなたはそれを通過しましたか? – user3598756

関連する問題