質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

1回答

7850閲覧

VBAで誤差範囲のバーを設定する

haru555

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/05/30 05:33

前提・実現したいこと

Win10 Excel2016です。
グラフに誤差範囲のバーを加えたいです。正・負方向ともにC9~I9になります。

発生している問題・エラーメッセージ

誤差範囲を作成する過程を記録し、それらをマクロに組み入れても反映されませんでした。オブジェクト変数またはWithブロック変数が設定されていませんと表示されます。

該当のソースコード

以下は記録した際のマクロです。

Sub 誤差()
' 誤差 Macro
ActiveChart.SetElement (msoElementLineNone)
ActiveChart.FullSeriesCollection(1).HasErrorBars = True
ActiveSheet.ChartObjects("グラフ 30").Activate
ActiveChart.FullSeriesCollection(1).ErrorBars.Select
ActiveChart.FullSeriesCollection(1).ErrorBar Direction:=xlY, Include:= _
xlBoth, Type:=xlCustom, Amount:=0
Application.CutCopyMode = False
Application.CutCopyMode = False
End Sub

試したこと

上記をマクロに組み込んだマクロになります。グラフ30となっていたところをグラフ1に変更してから組み込みました。

'グラフ

Dim ws As Worksheet

For Each ws In Worksheets

Dim dataRng As Range
Set dataRng = Range("C9:I9")

Dim pasteRng As Range
Set pasteRng = Range("K2")

With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
.SetSourceData dataRng

'グラフタイトル .HasTitle = True .ChartTitle.Text = "グラフ1" .Parent.Top = pasteRng.Top .Parent.Left = pasteRng.Left 'x軸タイトル .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Text = "day" 'y軸タイトル .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Text = "cell counts"

End With

ActiveChart.SetElement (msoElementLineNone) ActiveChart.FullSeriesCollection(1).HasErrorBars = True ActiveSheet.ChartObjects("グラフ1").Activate ActiveChart.FullSeriesCollection(1).ErrorBars.Select ActiveChart.FullSeriesCollection(1).ErrorBar Direction:=xlY, Include:= _ xlBoth, Type:=xlCustom, Amount:=0
補足情報(FW/ツールのバージョンなど)

VBAは最近始めたばかりで拙い内容ですが、ご教授いただけたら幸いです。宜しくお願い致します。

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

データーが
イメージ説明
の時
イメージ説明
であれば
amount:=1 の値と minusValues:=2 の値で誤差範囲描けます。

VBA

1'グラフ 2Dim Ws As Worksheet 3Set Ws = ThisWorkbook.Worksheets(1) 4 5Dim dataRng As Range 6Set dataRng = Ws.Range("C7:I8") 7 8Dim pasteRng As Range 9Set pasteRng = Ws.Range("K2") 10 11With Ws.Shapes.AddChart.Chart 12 .ChartType = xlColumnClustered 13 .SetSourceData dataRng 14 15 'グラフタイトル 16 .HasTitle = True 17 .ChartTitle.Text = "グラフ1" 18 .Parent.Top = pasteRng.Top 19 .Parent.Left = pasteRng.Left 20 21 'x軸タイトル 22 .Axes(xlCategory, xlPrimary).HasTitle = True 23 .Axes(xlCategory, xlPrimary).AxisTitle.Text = "day" 24 25 'y軸タイトル 26 .Axes(xlValue, xlPrimary).HasTitle = True 27 .Axes(xlValue, xlPrimary).AxisTitle.Text = "cell counts" 28 29 Dim SerColl                 ’<----追記 30 For Each SerColl In .SeriesCollection 31 SerColl.HasErrorBars = True 32 SerColl.ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _ 33 amount:=1, _ 34 minusValues:=2 35 Next 36End With

追記
データーセルイメージの差し替え
Dim SerColl の 追記

投稿2020/05/30 13:36

編集2020/06/11 13:26
sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haru555

2020/06/11 10:16

回答していただきありがとうございます。 回答していただいたものをコピペして試しましたところ、”変数の定義がされていない”と表示されました。おそらくSerCollの部分だと思われますが、どのように定義すればいいでしょうか。度重なる質問で申し訳ありません。
sinzou

2020/06/11 13:26

追記、修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問