2017-01-16 41 views
0

在VBA匹配操作之後 - 我得到一個範圍變量VBA中使用的保存範圍作爲輸入diagramm

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

它告訴我,我想一個條形圖中以可視化的數據是A3和Z3之間(總是在一行中),例如。我也可以打印這個

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

但是,現在我想使用rngSel來爲我的圖表輸入數據。我試過

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

但是不行。 rngSel只提供x座標範圍(例如A3到Z3,y值在A4到Z4),我怎樣才能 - 基於rngSel對象告訴我的Diagramm 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讀取值做到這一點。或ActiveChart.SetSourceData來源:=表(「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 Source:= rngSel.Resize(2,),PlotBy:= xlRows - 但然後我不能編譯,但我想向範圍添加一行而不是列 - ? – Sonnecken56

+0

@Sonnecken56,你通過了嗎? – user3598756