こんにちは初心者で初めての質問です。
エクセルの折れ線グラフで規定以上は色が変わるマクロを拝見しました。
(5行のデーターで20以上は色が変わる)
大変参考になるのですが、実際例題に従ってマクロをくみ確認したところ
手動(F8)でもステップでの動作では動きますが、押しっぱなし、及び
ボタンに登録しての操作では
activechart.seriescollection(1).points(i).selectの箇所で
オブジェクト変数またはwithブロック変数が設定されてません。となり
ストップしてしまいます。
いろいろ ヘルプで調べましたがわかりません。
どなたかどう対応すれば解決するのか教えてください。
ちなみにOSはwindows7です。
No.7ベストアンサー
- 回答日時:
>No.6 この回答への補足
上記で示されたMacro1のコードで説明します。
まず、ボタンの種類を明らかにしたいと思います。
本文の”ボタンに登録”という文言から
ボタンの種類はフォームコントロールあるいはオートシェイプ等の図形だと判断できます。
こちらのボタンからの実行では問題なくMacro1は動作します。
他に、アクティブXコントロールのボタンがあります。
こちらのボタンに登録(ちょっと違和感がある表現ですが)されている場合
仰る通りの処でデバッグになります。
そこで、ActiveChartではなく先の回答でグラフ名を使うように提案しました。
フォームコントロールのボタンあるいはオートシェイプ等の図形でも問題ありません。
>With ActiveSheet.ChartObjects("グラフ 2").Chart.SeriesCollection(1)
>の結果は、この部分で指定された名前のアイテム見つかりません。です。
これもActiveSheetではなく、シート名を使ってみてください。
下記○○○○○の部分をグラフが埋め込まれているシート名に変えて試してください。
Sheets("○○○○○").ChartObjects("グラフ 2").Chart.SeriesCollection(1)
>又同じ画面で一旦グラフを消して再選択するとグラフの数字が変わってしまい
>マクロの方を修正する必要があります。
直近に作成したグラフなら
With Sheets("○○○○○")
.ChartObjects(.ChartObjects.Count).Chart.SeriesCollection(1)
End With
で指定できます。
場合によってはChartObjectに任意の名前を付けた方が良いかも知れません。
素早い対応誠に有難うございます。
補足説明通りボタンとはオートシェプで実施しておりました。
これが登録すると、動いてくれませんでした。
しかし補足文中に、こちらのボタンからの実行では問題なくMacro1は動作します。
の文を拝見しまして、もしやと思いご指摘通りフォームコントロールに切り替えて
登録したところ、すべて問題解決です。誠に有難うございました。
オートシェプとフォームコントロールでは全く同じと思っていましたが、何かに
差があること分かりました。
ご丁寧且つ素早い対応本当に有難うございました。
今回ご指示頂いたシート名、グラフ名についてはただいま確認中ですが、
小生には若干難しくなっておりますので、じっくり確認させていただきます。
御蔭様でひとまず問題なく動くマクロが完成しましたこと、ご報告致しまして
お礼に変えさせていただきます。誠にありがとうございました。
今後共よろしくご指導お願い申し上げます
No.6
- 回答日時:
No.5 のコード不備がありました。
Chartプロパティが抜けています。
下記に訂正します。
Dim yv As Variant
Dim i As Long
With ActiveSheet.ChartObjects("グラフ 1").Chart.SeriesCollection(1)
yv = .values
For i = LBound(yv) To UBound(yv)
If yv(i) >= 20 Then
With .Points(i)
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End With
End If
Next i
End With
この回答への補足
お忙しい中ご丁寧なご指示有難うございます。
検討結果をご報告いたします。
With ActiveSheet.ChartObjects("グラフ 1").Chart.SeriesCollection(1)
に修正確認しました 当方のPCではグラフ名はグラフ2になります。
ただこれはコピーはできません。従って入力しました。
又同じ画面で一旦グラフを消して再選択するとグラフの数字が変わってしまい
マクロの方を修正する必要があります。
With ActiveSheet.ChartObjects("グラフ 2").Chart.SeriesCollection(1)
の結果は、この部分で指定された名前のアイテム見つかりません。です。
with activechart.seriescollection(1)に入れ替えてみましたが、
これですと for i = LBound....の箇所で型が一致しませんとなります。
皆様型のご指示で下記添付のマクロはスムースに動くこことが確認できるようになりました。が、ただしマクロ編集用の手動F8キー使用のときだけです。
なぜかマクロ用ボタンに登録すると *のところで
オブジェクト変数又はwithブロックの変数が設定されてませんでエラーになります。(グラフは選択済み、グラフ埋め込み)
今までの半端な経験ですが、F8キーで問題なくなるとマクロボタンに登録しても一切問題は出ませんでした。
是非原因を教えてください。
初めてのOKWaveでの質問であり、グラフのマクロは初めてのため不慣れな
質問、文章で申し訳ありませんが、宜しく原因究明お願いします。
Sub Macro1()
'折れ線グラフの20以上を赤印にする
Dim i As Long
For i = 1 To 5
With ActiveChart.SeriesCollection(1).Points(i) *
If Worksheets("sheet1").Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
Else
.MarkerBackgroundColorIndex = 8
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
No.5
- 回答日時:
ActiveChartは止めてグラフ名を使ってみてください。
"グラフ 1”の処を実際の名前に変えてください。
グラフを選択すれば数式バーの左隣にある「名前ボックス」にグラフの名前が表示されます。
コピーしてコードに貼ってください。
Dim yv As Variant
Dim i As Long
With ActiveSheet.ChartObjects("グラフ 1").SeriesCollection(1)
yv = .values
For i = LBound(yv) To UBound(yv)
If yv(i) >= 20 Then
With .Points(i)
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End With
End If
Next i
End With
≪参考≫
LBound, UBound 関数
http://homepage2.nifty.com/pasocon/nyumon/lbound …
No.4
- 回答日時:
データ系列の値を判定する例です。
こちらも試してください。
Sub test03()
Dim yv As Variant
Dim i As Long
With ActiveChart.SeriesCollection(1)
yv = .values
For i = LBound(yv) To UBound(yv)
If yv(i) >= 20 Then
With .Points(i)
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End With
End If
Next i
End With
End Sub
この回答への補足
大変お世話になり有難うございます。
ご指示の通りのマクロをくみ確認しましたが、下記の箇所でエラーとなります。
For i = LBound(yv) To UBound(yv)
理由は型が一致しませんです。小生もこのLBound(yv)と UBound(yv)
(yv)が並ぶことによく理解ができていません。(申し訳ありません)
又先にお送りしましたマクロが小生の発信ミスで半分抜けておりましたので
再度お送りしますので宜しくご検討下さい。
埋め込みグラフを実行してからマクロ実行しております。
データは整数の5個です。Worksheetsです
Sub Macro3()
For i = 1 To 5
'折れ線グラフの20以上を赤くする
ActiveChart.SeriesCollection(1).Points(i).Select*
With Selection
Worksheets("sheet1").Activate
If ActiveSheet.Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
Else
.MarkerBackgroundColorIndex = 8
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
*の部分でオブッジェクト変数またはwithブロックの変数が設定されてません
でエラーとなります
手動(F8)では動きますが、ボタンを作り登録後動かすとエラー発生します
申し訳ございません。宜しくお願いします。
No.3
- 回答日時:
Sub test01()
For i = 1 To 5
ActiveChart.SeriesCollection(1).Points(i).Select
With Selection
Worksheets("sheet1").Activate '★1
If ActiveSheet.Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
★1の処でグラフがアクティブでは無くなっているようです。
グラフは埋め込みグラフですか?
それともグラフシートですか?
埋め込みグラフならグラフの在るシートはWorksheets("sheet1")ですか?
それとも違うシートですか?
取りあえずSelectを止めて編集し直してみました。
試してください。
念のためですが実行前にグラフを選択して置いてください。
Sub test02()
Dim i As Long
For i = 1 To 5
With ActiveChart.SeriesCollection(1).Points(i)
If Worksheets("sheet1").Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
この回答への補足
大変お世話になり有難うございます。
ご指示の通りのマクロをくみ確認しましたが、手動(F8)ではスムースに動きましたが、ボタンを作り登録して押すと *の箇所でオブジェクト変数又はwithブロック変数が設定されてません。でエラーとなります。
又先にお送りしましたマクロが小生の発信ミスで半分抜けておりましたので
再度お送りしますので宜しくご検討下さい。
埋め込みグラフを実行してからマクロ実行しております。
データは整数の5個です。Worksheetsです。
Sub Macro3()
For i = 1 To 5
'折れ線グラフの20以上を赤くする
ActiveChart.SeriesCollection(1).Points(i).Select*
ご指示では上記の部分が
with ActiveChart.SeriesCollection(1).Points(i)となります。 *
With Selection
Worksheets("sheet1").Activate
If ActiveSheet.Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
Else
.MarkerBackgroundColorIndex = 8
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
*の部分でオブッジェクト変数またはwithブロックの変数が設定されてません
でエラーとなります
手動(F8)では動きますが、ボタンを作り登録後動かすとエラー発生します
申し訳ございません。宜しくお願いします。
お忙しい中ご指導誠に有難うございました。
手動ではご指示いただきましたマクロで問題なく動くのですが、
ボタンに登録するとエラーとなりました。
ボタンとはオートシェプで作ったものです。
念のためフォームコントロールで登録しましたところ無事ご指導いただいた
マクロが動くことが確認できました。
今までオートシェプでもフォームコントロールでも同じ機能と理解してましたが、
今回の件で理由はわかりませんが、違いがあることが分かりました。
初めてのOKWave利用と初のグラフ加工マクロと言うことで、要領が悪く
大変ご迷惑お掛けしましたが、無事動くようになったことご報告申し上げ
ましてお礼申し上げます
今後共宜しくご指導お願い申し上げます。
No.2
- 回答日時:
activechartになっていますか?
つまり、マクロ実行時に対象グラフが選択状態になっていますか?
質問とは無関係ですがselectはしなくても操作は可能です。
≪参考≫
グラフ操作関連のテクニック
http://moug.net/tech/exvba/0021.htm
Excel 2007以降のグラフ
http://www.officetanaka.net/excel/vba/graph/inde …
この回答への補足
早速の回答有難うございます。
対象グラフは選択状態です。
念のためマクロは下記です
マクロ例題は当サイトで見たものです。
データーは5個です
以上宜しく御検討ください。
Sub test01()
For i = 1 To 5
ActiveChart.SeriesCollection(1).Points(i).Select
With Selection
Worksheets("sheet1").Activate
If ActiveSheet.Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
No.1
- 回答日時:
前後関係が分からないので推測しますが、
> activechart.seriescollection(1).points(i).select
のiの値が、上記pointオブジェクトの数を超えているのではないでしょうか?
iを使われてるのでFor文またはLoop文を使われているかと思います。
上記の文の前後関係、特にFor文またはLoop文まわりを見せてください。
この回答への補足
早速の回答有難うございます。補足させていただきます
例題は当サイトで見たものです。
データーは5個です。
もちろん折れ線グラフを選択後マクロを動かしています。
宜しくご検討下さい。
Sub test01()
For i = 1 To 5
ActiveChart.SeriesCollection(1).Points(i).Select
With Selection
Worksheets("sheet1").Activate
If ActiveSheet.Cells(i, "b").Value >= 20 Then
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 2
End If
End With
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- その他(Microsoft Office) 折れ線グラフ、同じ項目の色 4 2022/12/23 15:46
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Excel(エクセル) マクロで作った ワードエクセル かけ線や コピペなど 修正や色々な方法を教えてください 2 2023/07/07 22:27
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
【至急】Excelで睡眠時間のグラ...
-
グラフの線だけをコピペしたい!
-
エクセルのグラフに上下限値の...
-
アクセスのグラフについて
-
エクセルでグラフの平均化を教...
-
Excelのグラフで上と右の枠線を...
-
回答をプロットするってなんで...
-
はみ出たレーダーチャートの表...
-
Excel2010 グラフ 横軸目盛線の...
-
excelで線と線の間を塗りつぶし...
-
EXELグラフをWORDに貼り付ける...
-
エクセルのグラフで、背景を塗...
-
Excelで膨大な系列数のグラフを...
-
Sma4のグラフ作製
-
Excelのグラフ「プロット...
-
Excelのグラフへの累乗表記につ...
-
エクセル グラフのプロットエ...
-
Excel2007のグラフで右の枠線を...
-
ExcelのVBAの保護をかけた時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
エクセルのグラフに上下限値の...
-
グラフの線だけをコピペしたい!
-
【至急】Excelで睡眠時間のグラ...
-
Excelのグラフで
-
Excelのグラフで上と右の枠線を...
-
エクセルでグラフの平均化を教...
-
ワードでCos、sinの図を書きたい
-
エクセル グラフのプロットエ...
-
EXELグラフをWORDに貼り付ける...
-
Excelのグラフ「プロット...
-
はみ出たレーダーチャートの表...
-
excelで線と線の間を塗りつぶし...
-
Excelグラフ
-
wordで数直線・グラフを作成
-
Sma4のグラフ作製
-
EXCELで数値に対応したベクトル...
-
Excelで膨大な系列数のグラフを...
-
グラフの上側が空いているので...
-
Excel:角ばったグラフの線を滑...
おすすめ情報