2017-10-13 1 views
0

私はExcelチャート内の各行のグラフを作成するループを作ろうとしています。スパークライン。私はまた、自分が何をしているのか本当に分かっていません。Excelで各行のグラフを作成するためにvbaでループを作成しようとすると、sparklinesは機能しません

私はので、私は私が思いついたものを、VBAで私の運をしようとしているC++での最小限の経験を持っている以下の通りです:私は、私はあなたが探していると考えているものと、以下のコードを書き換えました

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プロセスを自動化するように求められました。それで、私はできなかったと言っているのではなく、私はUdemyのVBAコースを10ドルで購入し、週末にそれを学びました。その後、クライアント用に自動化されたExcelダッシュボードを作成するように求められました。私は次の数ヶ月間、VBAでダッシュボードとドキュメントジェネレータを構築する作業をしました。テイクアウト - あなたがどんな言語を勉強したいのであれ、それは仕事でやるか、興味のある副プロジェクトを見つけてそれを作ります。それは本当にプログラミングを学ぶ唯一の方法です。 – pheeper

関連する問題