No.1
- 回答日時:
下記を試してください。
Dim cht As ChartObject
Dim n As Integer
Dim i As Integer
n = ActiveSheet.ChartObjects.Count
For Each cht In ActiveSheet.ChartObjects
i = i + 1
MsgBox i & "/" & n & vbCrLf & cht.Index & vbCrLf & cht.Name
Next
>グラフの色変更をマクロで一括実行していたのですが
そのコードを提示できないでしょうか。
この回答への補足
回答いただきありがとうございます。
実行しているのは、
Sub b_Chartライン太さ変え()
For shtNo = 1 To Sheets.Count
Sheets(shtNo).Select
ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveChart.SeriesCollection(6).Select
With Selection.Border
.ColorIndex = 14
.Weight = xlThin
.LineStyle = xlContinuous
End With
(中略)
Next shtNo
End Sub
No.2
- 回答日時:
全グラフの、系列6、に対して操作すればよいのですか?
下記のようでどうでしょうか?
Dim ws As Worksheet
Dim cht As ChartObject
For Each ws In ActiveWorkbook.Worksheets
'ws.Select
For Each cht In ws.ChartObjects
With cht.Chart.SeriesCollection(6).Border
.ColorIndex = 14
.Weight = xlThin
.LineStyle = xlContinuous
End With
Next
Next ws
この回答への補足
引き続き回答いただきありがとうございます。
前回、書き込みの途中で送信してしまい、修正もできず、
失礼しました。
操作するのは系列6のほかに、7と8の三種あります。
アドバイスのコードを実行したところ、
With cht.Chart.SeriesCollection(6).Border
の箇所で、
実行時エラー '1004':
'SeriesCollection' メソッドは失敗しました: '_Chart' オブジェクト
が発生しました。
解決策がありそうなコードでしたので、
元の図から系列7と8を削除したり、
邪魔そうな図を削除したりしながら試しましたが、
うまくいきませんでした。
メッセージボックスの使用は避けたいので、
この方向で、もう少しアドバイスいただけるでしょうか。
よろしくお願いします。
No.3
- 回答日時:
>前回、書き込みの途中で送信してしまい、修正もできず、
>失礼しました。
なんのことか解りませんが、お礼の欄を使って、レス出来ると思います。
>実行時エラー '1004':
>'SeriesCollection' メソッドは失敗しました: '_Chart' オブジェクト
こちらでは無問題なので解りかねます。
シートの保護とかは関係ないでしょうか?
>元の図から系列7と8を削除したり、
>邪魔そうな図を削除したりしながら試しましたが
「元の図」とはグラフのことですか?
「邪魔そうな図」とはグラフに図形を描画しているという事ですか?
いずれにしても。結果がでているように、無関係だと思います。
ありがとうございます。
特に保護はかけていません。
「元の図」とはグラフです。
「邪魔そうな図」とは、加工したいグラフ以外に別のグラフがあります(同一シート上にグラフが2つ、その他ラインが複数本ちらばっている)。
提示していただいたコードで、
ChartObjectがどういう状態ならエラーがでないか、
もう少し試して見ます。
No.4
- 回答日時:
>「邪魔そうな図」とは、加工したいグラフ以外に別のグラフがあります
>(同一シート上にグラフが2つ、その他ラインが複数本ちらばっている)。
各シートにはグラフが2つ在るということですか?
必ず2つですか?
2つ以上は無いのですか?
「その他ラインが複数本」とはオートシェイプの直線があるという事ですか?
たとえ、オートシェイプの直線が存在していても、無問題です。
回答番号:No.2 で示したコードは、全てのグラフの系列6に対して加工操作します。
加工したいグラフのインデックス(名前に付けられる番号ではありません)が、2(そのシート上で2番目に作成されたグラフというような意味です)とするなら
Dim ws As Worksheet
Dim cht As ChartObject
For Each ws In ActiveWorkbook.Worksheets
With ws.ChartObjects(2).Chart.SeriesCollection(6)
.Border.ColorIndex = 14
End With
Next ws
とすれば、
全てのシートで、インデックスが 2 のグラフの、系列番号6 の折れ線の色が、ColorIndex値 14 の色に設定されます。
お世話になります。
”グラフ 4”の場合、
ChartObjects(2)を
ChartObjects(4)にすると正常に動きます。
グラフは必ず2つしかないのですが、
確認できたものとしては2、4、6、14、1028があります。
マクロの自動記録では、
普通に選択した場合の”グラフ 4”は、
ActiveSheet.ChartObjects("グラフ 4").Activate
オートシェイプで選択した場合
ActiveSheet.Shapes("Chart 4").Select
です。
1028個もグラフを作るはずはないので、
なぜ”グラフ 1028”が存在するかは不明です。
(加工しない方のグラフも5や15などがあり、一定ではありません。)
(ラインはオートシェイプの直線です。)
No.5ベストアンサー
- 回答日時:
>”グラフ 4”の場合、
>ChartObjects(2)を
>ChartObjects(4)にすると正常に動きます。
グラフ名の数字は、オートシェイプ等も含まれた数字になります。
例えば、同じシートで
グラフ
オートシェイプ
オートシェイプ
グラフ
といった順で作成(コピーも含む)されると
("グラフ 1")
("オートシェイプ名 2")
("オートシェイプ名 3")
("グラフ 4")
といったように、出現した順番になります。
在る時点で、どれかが削除されてもその数字がつかわれる事はありません。
("グラフ 4")
を削除して、新たにグラフを作成すれば
("グラフ 5")
となります。
Shapesは、すべての図形が返されます。グラフオブジェクト、オートシェイプ、画像、その他、が含まれます。
ChartObjectsは、埋め込みグラフを返します。
ですから
>ChartObjects(2)を
>ChartObjects(4)にすると正常に動きます。
ということは、グラフオブジェクトが最低4つはそのシート上に在ることになります。
もしかすると、非表示状態でシート上に存在しているというようなことはないでしょうか。。
Msgbox Activesheet.ChartObjects.Count
でグラフが何個あるか確認してください。
お蔭様で進展がありました。
ご指摘の通り、線のようになったグラフが
罫線に重なって隠れていたので、削除しました。
(作成当時、グラフを削除せずに列削除をしたと思われます。)
ただ、例えば、”グラフ 14”の場合、
Msgbox Activesheet.ChartObjects.Count
は「2」になりましたが、
マクロの自動記録で、
ActiveSheet.ChartObjects("グラフ 14").Activate
ActiveSheet.Shapes("Chart 14").Select
となります。
また、このシートだけをを新規ファイルにコピーして調べると、
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveSheet.Shapes("Chart 1").Select
になります。
ブックに共存する他のシートが影響するのでしょうか。
No.6
- 回答日時:
>ただ、例えば、”グラフ 14”の場合、
>Msgbox Activesheet.ChartObjects.Count
>は「2」になりましたが、
>
>マクロの自動記録で、
>ActiveSheet.ChartObjects("グラフ 14").Activate
>ActiveSheet.Shapes("Chart 14").Select
>となります。
回答番号:No.5でもコメントしましたが
名前の通し番号と、ChartObjectのインデックスは別物です。
名前の通し番号には不確定要素があります。決め打ちで使う事は難しいと思います。
ChartObjectのIndexを使った方が良いと思います。
あるいは、一意の名前を付けて対処したほうが良いかもしれません。
>また、このシートだけをを新規ファイルにコピーして調べると、
>ActiveSheet.ChartObjects("グラフ 1").Activate
>ActiveSheet.Shapes("Chart 1").Select
>になります。
>
>ブックに共存する他のシートが影響するのでしょうか。
シートその物をコピーすると、通し番号がリセットされます。
通し番号はそのシートに付随しているもので、他のシートの影響はありません。
>ChartObjectのIndexを使った方が良いと思います。
>あるいは、一意の名前を付けて対処したほうが良いかもしれません。
長時間お付き合いいただいて恐縮ですが、
この辺りのテクニックをもう少しアドバイスいただけるでしょうか。
ご指摘の通り、決め打ちができないので、
「グラフのインデックスを取得したい」と思ったのですが、
これまでの回答から、それは不可能なので、
代替手法を使うのだと思っていました。
よろしくお願いします。
No.7
- 回答日時:
既に、これまでの回答で、Indexの取り方、使い方は書いています。
一意の名前の付け方
ActiveChart.Parent.Name = "ABC1"
手動でやるなら
グラフを選択すれば「名前ボックス」にグラフ名が表示されます。
Excel2007以前なら、「名前ボックス」をクリックし、例えば ABC1 と打ち込み、Enter、で新しい名前になります。
Excel2007ではこの機能が使えなくなっています。
いろいろやってみましたが、難しいですね。
タイムリミットなので、結局エラーだけ手動でやりました。
アドバイスいただきありがとうございました。
No.8
- 回答日時:
>いろいろやってみましたが、難しいですね。
どんな事をいろいろ試されたのか解りませんが、難しいことはないと思いますよ。
コードを提示して頂けないので推測ですが、Indexの使い方は理解されたと認識します。
あとは、回答番号:No.5 この回答へのお礼 で明らかになったような阻害要因を排除してやれば上手く回せると思います。
シート上には2個のグラフということですから
Msgbox Activesheet.ChartObjects.Count
で、答えが2以上ならグラフの残骸があるので、それを見つけて削除すれば良いわけです。
グラフをひとつ選択して、Tabキーを押せば次のグラフ(含む他の図形)が選択されます。
姿の見えないグラフも選択されるので、容易に見つけることが出来、削除できます。
余談ですが
回答番号:No.3 で、「お礼の欄を使って、レス出来ると思います。」とコメントしました。
これは、捕捉と合わせて、ひとつの回答に2回レス出来るという意味です。
あと、これ以上の応答を望まれないのなら、締め切り処理をよろしくお願いします。
継続をお望みなら、遠慮なく捕捉で質問してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Excel(エクセル) Excel 散布図グラフ 外れ値 セル番地参照方法 4 2022/04/19 18:56
- Excel(エクセル) エクセル ヒストグラム作成 1 2023/01/02 09:55
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Excel(エクセル) エクセルのグラフに上下限値の横棒を表示させたい 5 2022/12/12 11:09
- Excel(エクセル) <スプレッドシート>採用進捗 グラフ作成について 3 2022/10/23 15:52
- Excel(エクセル) Excel グラフのプロットエリアについて 2 2022/08/26 18:12
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
エクセルのグラフに上下限値の...
-
はみ出たレーダーチャートの表...
-
グラフの線だけをコピペしたい!
-
wordで数直線・グラフを作成
-
エクセルでグラフの平均化を教...
-
ワードでCos、sinの図を書きたい
-
エクセルで作ったグラフが縮む
-
Excelのグラフ「プロット...
-
excel グラフ
-
Excelのグラフへの累乗表記につ...
-
Excelのグラフで上と右の枠線を...
-
Excelの関数
-
Excel2010 グラフ 横軸目盛線の...
-
Excel2007のグラフで右の枠線を...
-
作成したグラフを1シートに複数...
-
Excelのグラフで
-
マイナスを表現する場合はどの...
-
成績に応じてグラフに自動で色...
-
Excelグラフについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
エクセルのグラフに上下限値の...
-
ワードでCos、sinの図を書きたい
-
はみ出たレーダーチャートの表...
-
【至急】Excelで睡眠時間のグラ...
-
グラフの線だけをコピペしたい!
-
Excelのグラフで
-
エクセルでグラフの平均化を教...
-
Excelのグラフで上と右の枠線を...
-
Excelのグラフ「プロット...
-
excelで線と線の間を塗りつぶし...
-
Excel:角ばったグラフの線を滑...
-
Excelで膨大な系列数のグラフを...
-
wordで数直線・グラフを作成
-
Excel2010 グラフ 横軸目盛線の...
-
EXELグラフをWORDに貼り付ける...
-
Excelでグラフの種類「縦棒」で...
-
グラフの上側が空いているので...
-
Excel 散布図グラフ 外れ値 セ...
-
パワーポイントでコストアップ...
おすすめ情報