エクセルのマクロ初心者なのですが、先に進まなくなってしまいました。よろしくお願いします。
ブック内にシート100枚位あります。(このシートはブック毎に変動します。)
各シート上にあるデーターで、それぞれ、そのシート上に図を作成したいのですが、どうしても、それぞれのシート上にどうやって図を出したらいいのかわかりません。
For Each 各シート In Worksheets
With 各シート
.Activate
Dim data As Range
Set data = Range("B3:C2500")
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=data
ActiveChart.Location Where:=xlLocationAsObject, Name:="sheet1"
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Interior.ColorIndex = xlNone
End With
Next
あまり、内容も分かっていないのですが、このようなマクロを作ったのですが、図を”Sheet1”に出すことしかできませんでした。
どうにかして、それぞれのシート毎に図を出していきたいのですが、
アドバイスをいただけたらと思います。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは。
本来、埋め込みチャートは、以下のような書き方はしないのですが、グラフの中でも、散布図だけは特殊なコードのようです。掲示板の回答で何度か失敗した経験があります。自分の環境と他人の環境では思うように行かないのです。これは、Excelのバージョンによってコードが変わるからです。ともかく、試してください。
ただ、シートが100枚ほどで、このようなグラフ範囲を抱えて、ブックが持ちこたえられるのは、かなり疑問が残るところです。仮に、出来たとしても、繰り返さないほうがよいような気がします。
なお、ループ上の中で、 Dim data As Range と宣言しなおすのは、VBAではやめたほうがよいです。
Sub MakingChart()
Dim ws As Variant
Const MYRNG As String = "B3:C2500" 'データ範囲
For Each ws In ActiveWorkbook.Worksheets
Charts.Add
With ActiveChart
.ChartType = xlXYScatterLines
.SetSourceData Source:=ws.Range(MYRNG), _
PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=ws.Name
End With
With ActiveChart.PlotArea '仕切りなおし
With .Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
.Interior.ColorIndex = xlNone
End With
Next ws
End Sub
ありがとうございます。今日、実行してみたのですが、動きがだんだん遅くなってきて不安だったのですが、なんとか図を描くことができました。
No.2
- 回答日時:
質問には、影響ないと思われる部分は省いて、質問に掲出してください。
それにデータ例も簡素にするとか。そういう思考訓練が、プログラム作成やデバッグにも役立つと思います。4シートで、各シートA1:C3にデータを入れてテストしました。
下記以外は今回の質問に関係ないのではと思うが。
下記を参考にしてください。
各シートに散布図グラフが描かれました。
Sub test01()
Dim sh As Object
For Each sh In Worksheets
With sh
.Activate
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=sh.Range("A1:B3")
ActiveChart.Location Where:=xlLocationAsObject, Name:=sh.Name
End With
Next
End Sub
質問ではシート名をSheet1に固定しているから
ActiveChart.Location Where:=xlLocationAsObject, Name:="sheet1"
が原因ですね。ここを相対化する方法を質問すればよかったのです。
ありがとうございます。どのように、質問をしたらいいのかわからず、言いたいことが伝わらなかったらと全部載せてしまいました。各項目ごとに考えられるように努力していきたいと思います。
No.1
- 回答日時:
変数「各シート」は Wroksheet ですから、その名前をセットします。
具体的には下記を変えます。
ActiveChart.Location Where:=xlLocationAsObject, Name:="sheet1"
↓
ActiveChart.Location Where:=xlLocationAsObject, Name:=各シート.Name
この回答への補足
質問なのですが、このマクロを同じようなデータのある別のブックで試してみたのですが、図は書けるのですが、データ範囲をうまく認識できず、図が書けないシートがあります。このような場合はどうしたらいいのでしょうか?よろしくお願いします。
補足日時:2007/09/20 21:56お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルで複数のシートに画像...
-
エクセルのシー名を二段表示に...
-
EXCELの図形(テキストボックス)...
-
特定のシートのみ再計算させな...
-
エクセルの2つのシートを並び...
-
Accessのテーブルを既存のExcel...
-
(エクセル)Indirect関数で、ハ...
-
エクセルで、シートの名前を変...
-
エクセルのシート連番の振り直し
-
エクセルでリンク貼り付けした...
-
Wordで差し込み印刷時に表示す...
-
【Excel VBA】コンボボックスで...
-
エクセルで誤ってF11キーを押す...
-
エクセルシートの下の名前欄が...
-
エクセルマクロでシート名を条...
-
エクセルの複数シートでのリン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
ハイパーリンクでジャンプした...
-
エクセルでブック内の倍率がバ...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
EXCELの図形(テキストボックス)...
-
エクセルのシート連番の振り直し
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
Wordで差し込み印刷時に表示す...
-
EXCELで存在しないシート...
-
自分だけの辞書(データベース...
-
accessへエクセルの複数のシー...
-
Excelでマクロ設定したが反映さ...
-
エクセルの複数シートでのリン...
-
エクセル2003で、複数のシート...
おすすめ情報