都道府県穴埋めゲーム

エクセルのマクロ初心者なのですが、先に進まなくなってしまいました。よろしくお願いします。

ブック内にシート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”に出すことしかできませんでした。

どうにかして、それぞれのシート毎に図を出していきたいのですが、
アドバイスをいただけたらと思います。よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

 ありがとうございます。今日、実行してみたのですが、動きがだんだん遅くなってきて不安だったのですが、なんとか図を描くことができました。

お礼日時:2007/09/20 22:04

質問には、影響ないと思われる部分は省いて、質問に掲出してください。

それにデータ例も簡素にするとか。そういう思考訓練が、プログラム作成やデバッグにも役立つと思います。
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"
が原因ですね。ここを相対化する方法を質問すればよかったのです。
    • good
    • 0
この回答へのお礼

ありがとうございます。どのように、質問をしたらいいのかわからず、言いたいことが伝わらなかったらと全部載せてしまいました。各項目ごとに考えられるように努力していきたいと思います。

 

お礼日時:2007/09/20 21:52

変数「各シート」は Wroksheet ですから、その名前をセットします。


具体的には下記を変えます。

ActiveChart.Location Where:=xlLocationAsObject, Name:="sheet1"
               ↓
ActiveChart.Location Where:=xlLocationAsObject, Name:=各シート.Name

この回答への補足

 質問なのですが、このマクロを同じようなデータのある別のブックで試してみたのですが、図は書けるのですが、データ範囲をうまく認識できず、図が書けないシートがあります。このような場合はどうしたらいいのでしょうか?よろしくお願いします。

補足日時:2007/09/20 21:56
    • good
    • 0
この回答へのお礼

ありがとうございました。
うまく図を書くことができました。

お礼日時:2007/09/20 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!