2017-10-13 78 views
0

我想要創建一個循環,將爲我的Excel圖表中的每一行創建一個圖表,並且我不能使用一條火花線。我也不知道自己在做什麼。試圖在VBA中創建一個循環爲Excel中的每一行創建一個圖表,sparklines不工作

我在C最小的體驗++所以我想我的運氣VBA,我想出了低於:

Sub chartcreation() 
' 
chartcreation Macro 
' 
Sub Main() 

    x$ = 2 

Do While Cells(x$, 2) <> "" 

    Range("A1:Tx$").Select 
    Range("Tx$").Activate 
    ActiveSheet.Shapes.AddChart2(227, xlLine).Select 
    ActiveChart.SetSourceData Source:=Range("MAY!$A$1:$T$1",MAY!A$(x$)$T$x$") 
    ActiveSheet.Shapes("Chart 3").IncrementLeft 380.6249606299 
    ActiveSheet.Shapes("Chart 3").IncrementTop -270 

    x = x + 1 

End Sub 
+0

VBA不能合法嵌套過程...'Sub ... End Sub'不能像這樣嵌套,你的代碼是否被編譯?你準確的問題是什麼? –

回答

0

我已經重寫下面的代碼是什麼,我相信你正在尋找。這將遍歷列B中每行的值,創建圖表,並將該圖表的左上角放置在該行的U列中。

Option Explicit 

Sub Main() 
    Dim strChrt As String 
    Dim ws As Worksheet 
    Dim x As Integer 
    Dim lastRow As Integer 

    Set ws = ActiveSheet 
    lastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row 

    For x = 2 To lastRow 
     ws.Range(ws.Cells(x, "A"), ws.Cells(x, "T")).Select 
     ws.Shapes.AddChart2(227, xlLine).Select 

     strChrt = Trim(Replace(ActiveChart.Name, ActiveSheet.Name, "")) 
     ActiveSheet.Shapes(strChrt).Left = ws.Cells(x, "U").Left 
     ActiveSheet.Shapes(strChrt).Top = ws.Cells(x, "U").Top 

    Next x 

End Sub 
+0

非常感謝!它完美的作品。 只是一個隨機問題,但你是如何學習在Excel中有一個焦點的vba? – danielyankee710

+0

簡答題在工作。長時間的回答是我在開始一項新工作時沒有編程知識。我被要求自動化一個Excel過程。所以,我沒有說我不能,我以10美元的價格購買了Udemy的VBA課程,並花了整個週末的時間學習它。之後,我被要求爲客戶創建一個自動化Excel儀表盤。我花了接下來的幾個月在VBA中構建儀表板和文檔生成器。外賣 - 如果你想學習任何語言,可以在工作中找到它,或找到一個你感興趣的項目並構建它。這是學習編程的唯一途徑。 – pheeper