2012-03-09 7 views
1

ExcelでVBAコードを自動的に作成してフォーマットし、チャートのExcelシートに貼り付けることができます。このコードは、株価グラフを除くすべてのグラフでうまく機能しているようです。マクロを実行するたびに、グラフの作成を見ることができますが、書式設定や特別な貼り付けについては、グラフは表示されません。言い換えれば、コードの実行が終了したらグラフを見ることができません。何か変わった株価チャートを使って

在庫グラフで何が起こっているのか分かりません。誰も説明して解決策を教えてもらえますか? ありがとうございました。ここで

は私のコードです:

Sub CreateGraph() 
Dim MyRng As Range 
Dim LastCell As Long 
LastCell = Worksheets(1).Range("E3").End(xlDown).Row 
Set MyRng = Worksheets(1).Range("B3:E" & LastCell) 
    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.SetSourceData Source:=MyRng 
    ActiveChart.ChartType = xlStockHLC 
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart1" 
End Sub 

Sub FormatChart() 
Let Title = Sheets("Sheet1").Cells(2, 1) 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.SeriesCollection(1).Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlCategory).Select 
    ActiveChart.Axes(xlCategory).ReversePlotOrder = True 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.SetElement (msoElementChartTitleAboveChart) 
    ActiveChart.ChartTitle.Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.ChartTitle.Text = Title & "responses*" 
    With ActiveChart.ChartTitle.Font 
    .Name = "Arial" 
    .FontStyle = "Bold" 
    .Size = 8 
    End With 
    With ActiveChart.Axes(xlCategory).TickLabels.Font 
    .Name = "Arial" 
    .FontStyle = "Regular" 
    .Size = 7 
    End With 
    With ActiveChart.Axes(xlValue).TickLabels.Font 
    .Name = "Arial" 
    .FontStyle = "Regular" 
    .Size = 7 
    End With 
    With ActiveChart.PlotArea.Interior 
    .ColorIndex = 2 
    .PatternColorIndex = 1 
    .Pattern = xlSolid 
    End With 
    Range("S4").Select 
    ActiveWindow.SmallScroll Down:=48 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Legend.Select 
    With ActiveChart.Legend.Font 
    .Name = "Arial" 
    .FontStyle = "Regular" 
    .Size = 8 
    End With 
    ActiveWindow.SmallScroll Down:=45 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.PlotArea.Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveWindow.SmallScroll Down:=-45 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlValue).MajorGridlines.Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveWindow.SmallScroll Down:=-54 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.ChartArea.Select 
    ActiveChart.ChartArea.Width = 500 
    ActiveChart.ChartArea.Height = 1000 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlValue).MajorGridlines.Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlValue).Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlValue).MajorGridlines.Select 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    ActiveChart.Axes(xlValue).Select 
    ActiveChart.Axes(xlValue).MinimumScale = 0 
    ActiveChart.Axes(xlValue).MaximumScale = 100 
    ActiveChart.Axes(xlValue).MajorUnit = 20 
    ActiveChart.Axes(xlValue).MajorUnit = 10 
     With ActiveChart.SeriesCollection(1) 
     .Interior.Color = RGB(0, 51, 153) 
    End With 
      With ActiveChart.SeriesCollection(2) 
     .Interior.Color = RGB(80, 116, 77) 
    End With 
     ActiveSheet.ChartObjects("Chart 1").Activate 
     ActiveSheet.ChartObjects("Chart 1").Activate 
    Selection.Cut 
    Sheets("Chart2").Select 
    ActiveChart.Paste 
End Sub 
+0

あなたのコードの一部を投稿する場合は、より良い反応を得る可能性があります。 – bernie

+0

アダムに感謝します。私は自分のコードを投稿しました。 – Nupur

答えて

0

Nupur、

は(をしようとしたをテストした)、これを試してみてください

とコード

ActiveSheet.ChartObjects("Chart 7").Activate 
ActiveSheet.ChartObjects("Chart 7").Activate 
Selection.Cut 
Sheets("Chart2").Select 
ActiveChart.Paste 

を交換してください

ActiveSheet.ChartObjects("Chart 7").Activate 
ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart2" 

助産師:マクロを記録したと思いますか?あなたが安全に缶)

ActiveSheet.ChartObjects("Chart 1").Activate 
ActiveSheet.ChartObjects("Chart 1").Activate 
ActiveSheet.ChartObjects("Chart 1").Activate 
ActiveSheet.ChartObjects("Chart 1").Activate 
ActiveSheet.ChartObjects("Chart 1").Activate 

この

ActiveSheet.ChartObjects("Chart 1").Activate 

; :)コードのこの2つの作品は、方法はあなたが一度だけ、それを伝える必要があり、かなり「謙虚」で同じこと:) Excelを行います余分な行を削除します。

HTH

シド

+0

@ Sid:お返事ありがとうございます。コードは正常に動作していますが、「特定のディメンションは現在のチャートタイプでは無効です」というエラーが表示されます。デバッグ時には次の行が強調表示されます:ActiveChart.Location場所:= xlLocationAsObject、Name:= "Chart2" – Nupur

+0

@Nupur:コードをテストしたところうまくいきました。迅速な解決策のためにwww.wikisend.comでファイルをアップロードし、ここでリンクを共有できますか? –

+0

こんにちはSid!私はコードがなぜ私にランタイムエラーを与えているのか理解しています。 Name:= "Chart2"をName:= "Sheet1"に変更すると、コードはうまく機能します。しかし、私はまだグラフを "チャート"シートに保存し、通常のシートに保存する必要はありません。 – Nupur