Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13604 / 13646 ツリー ←次へ | 前へ→

【4590】連続グラフ作成中のエラーについて pino 03/3/27(木) 19:53 質問
【4604】Re:連続グラフ作成中のエラーについて Jaka 03/3/28(金) 11:30 発言
【4620】Re:連続グラフ作成中のエラーについて pino 03/3/28(金) 18:13 質問
【4635】Re:連続グラフ作成中のエラーについて よろずや 03/3/31(月) 13:06 回答
【4637】Re:連続グラフ作成中のエラーについて Kein 03/3/31(月) 13:39 回答
【4642】Re:連続グラフ作成中のエラーについて pino 03/3/31(月) 17:53 お礼
【4648】解決と言う事ですが、参考までに。 Jaka 03/4/1(火) 9:23 発言
【4652】Re:解決と言う事ですが、参考までに。 pino 03/4/1(火) 12:23 質問
【4658】Re:解決と言う事ですが、参考までに。 Jaka 03/4/1(火) 13:40 回答
【4675】ごめんなさい Jaka 03/4/2(水) 9:10 発言

【4590】連続グラフ作成中のエラーについて
質問  pino  - 03/3/27(木) 19:53 -

引用なし
パスワード
   以前ここの質問箱でお世話になった物ですが
連続してグラフを作成するマクロです。
最近になって連続して2000個のグラフを作成しようと思い
実行したのですが、250個目辺りで
 .SeriesCollection(1).XValues = r1 のところでエラーが出てしまいます。
また、一度マクロを終了しても、文字等をセルに入力しようとすると
"このブックにはこれ以上フォントを設定できません1004":というエラーが出て
しまいます。
当方Macを使用していますが、Winで実行してもグラフの個数は違いますが
エラーは出てしまいます。
Excel 2000 を使用しています。
一個目からエラーが出てしまえば原因も分かりそうなんですが
250個も作ってからなので何が原因か私には解りません。
みなさん どうぞ宜しくお願いいたします。

-------------------------------------------------------------------

Sub グラフ()
  Dim co As ChartObject
  Dim ws1 As Worksheet, ws2 As Worksheet
  Dim r1 As Range, r2 As Range, r3 As Range
  
  Set ws1 = ActiveSheet
  Set ws2 = ws1.Parent.Worksheets.Add
 
  '最大、Xの範囲など
  With ws1
    Rmax& = .Range("A1").End(xlDown).Row - 1 '列の最終行の値
    Imax& = .Range("B1").End(xlToRight).Column - 1 '行の最終行の値
    Set r1 = .Range(.Cells(1, 2), .Cells(1, Imax&)) 'X軸の配列
  End With

  For II& = 1 To Rmax& '列
   
    With ws1
     Set r2 = .Range(.Cells(1 + II&, 1), .Cells(1 + II&, Imax&))
    End With

    Gx = 4
    Gy = 11
    'グラフを描く位置(10個で折り返し)
    CC% = ((II& - 1) \ 10) * Gx + 1
    RR& = ((II& - 1) Mod 10) * Gy + 1
    If CC% + Gx - 1 > 256 Then

     MsgBox "これ以上つくれません", vbCritical, II&
     Exit For
    Else
     With ws2
       Set r3 = .Range(.Cells(RR&, CC%), _
               .Cells(RR& + Gy - 1, CC% + Gx - 1))
     End With
     'グラフ追加
     With r3
       Set co = ws2.ChartObjects.Add(.Left, .Top, .Width, .Height)
     End With
     
     With co.Chart
      With .ChartArea
        .Border.LineStyle = xlLineStyleNone
        .Interior.ColorIndex = 2 
        .AutoScaleFont = False
        .Font.Size = 8
      End With
      
       .ChartType = xlLine
       .SetSourceData Source:=r2, PlotBy:=xlLine
ここ→    .SeriesCollection(1).XValues = r1
       .HasTitle = True
       .HasLegend = False
       .Axes(xlCategory).HasTitle = False
       .Axes(xlValue).HasTitle = False
       .Axes(xlValue).MajorGridlines.Border.ColorIndex = 15
       .Axes(xlValue).MajorGridlines.Border.Weight = xlHairline
       .Axes(xlValue).MajorGridlines.Border.LineStyle = xlContinuous
       .Axes(xlCategory).TickLabels.Orientation = xlDownward
       .PlotArea.Interior.ColorIndex = 2
       .PlotArea.Border.LineStyle = xlNone 

      .ChartTitle.Text = ti
     End With
    End If
 
Next
  Set co = Nothing: Set ws1 = Nothing: Set ws2 = Nothing
  Set r1 = Nothing: Set r2 = Nothing: Set r3 = Nothing

End Sub
-------------------------------------------------------------------

【4604】Re:連続グラフ作成中のエラーについて
発言  Jaka  - 03/3/28(金) 11:30 -

引用なし
パスワード
   こんにちは。
回答ではありませんが...。
単純にA列IV列まで1から256までの連番を振って、それを260行までフィルドラッグしたデータで試してみました。
私のWin98 & Exl97 メモリ64Mでは、「途中でメモリ不足です。」ってアラートが出て止まっちゃいました。

因に123個目のグラフ作成で、同じ所で止まってました。
  .SeriesCollection(1).XValues = r1

エラー内容は、「Seriesクラスのxvaluesプロパティを設定できませんでした。」と、言う事でした。

推測ですが、メモリに関係しているんじゃないのでしょうか?
(実装メモリ or エクセルが使用管理できるメモリ量)

ゴミレスですみません。

【4620】Re:連続グラフ作成中のエラーについて
質問  pino  - 03/3/28(金) 18:13 -

引用なし
パスワード
   Jakaさん、返信ありがとうございます。
メモリー関連だから実装しているメモリー量が違う
MacとWinでできるグラフの数が違うのかも知れませんね!
グラフを作りながらメモリを開放でもできれば、
数多くグラフが作れるようになるってことですね!
そんなことができるかどうかは分かりませんが。

何か良い方法はありませんか?
どうしてもいっぺんに作りたいのです。
よろしくお願いいたします。

【4635】Re:連続グラフ作成中のエラーについて
回答  よろずや  - 03/3/31(月) 13:06 -

引用なし
パスワード
   ▼pino さん:
>Jakaさん、返信ありがとうございます。
>メモリー関連だから実装しているメモリー量が違う
>MacとWinでできるグラフの数が違うのかも知れませんね!
>グラフを作りながらメモリを開放でもできれば、
>数多くグラフが作れるようになるってことですね!
メモリ開放=グラフの削除
ファイルにでも保存しておいて削除ですかね。

>どうしてもいっぺんに作りたいのです。
無理です!!!!

【4637】Re:連続グラフ作成中のエラーについて
回答  Kein  - 03/3/31(月) 13:39 -

引用なし
パスワード
   >2000個のグラフ
問題は「なぜ2000個も必要か」ってことです。どんなデータのグラフか知りませんが、
状況によっては考え方を変えるだけで、劇的に解決する可能性があります。
例えば私は株の取引をやっているので、日本市場の全上場企業(3600社ぐらいある)
のチャートを見たいと思ったら、グラフシート1個のみ作って、後は「データ範囲の
切り替え・変更」だけで済ませるでしょうね。(実際は専用ソフトを使うので、
エクセルのグラフは海外市場にある銘柄、150社程度のみに適用している)
そうすればいちいちグラフの書式を変える必要もなく、目的の銘柄のグラフを探す
手間もなく、当然メモリ不足で落ちる心配もありません。
そのような仕組みを作るには、"データ元シートにおいて、規則正しいデータ配置に
したレイアウトを作る"ということがポイントになります。
あなたが見落としているのは「たくさん作っても1度に見られる量は限られる」という
点だと思いますが・・。

【4642】Re:連続グラフ作成中のエラーについて
お礼  pino  - 03/3/31(月) 17:53 -

引用なし
パスワード
   よろずやさん Kein さん 返答有り難うございます。

>問題は「なぜ2000個も必要か」、「たくさん作っても1度に見られる量は限られる」という点だと思いますが・・。

なぜ、2000個も必要かと申しますと、EXCELでグラフを見るのではなく、
商品別のグラフをすべてJPEG書き出しを行い、
FileMakerでグラフ入りデータベースを作っているからです。

しかし、解決いたしました。2000個作る事が出来ました。
説明不足だったのですが、先程も書きましたように最終的には
JPEG書き出しをしたかったので、グラフを一つ書いてはJPEG書き出しをして
グラフ削除という作業を繰り返す事によって解決しました。
しかし、Winだとメモリーの搭載量に関わらず300個程度でエラーが出てしまうのですが、Macだと無事2000個どころか3000個以上もエラー無く書き出せました。

Winだと256MBのラップトップも 1GB over のデスクトップも同じ299この所で
エラーになってしまいました。EXCEL自体に使用可能メモリー量でもあるのだろうか?不思議です。

解決して何よりです。
みなさん 有り難うございました。

【4648】解決と言う事ですが、参考までに。
発言  Jaka  - 03/4/1(火) 9:23 -

引用なし
パスワード
   おはようございます。

IBMノートの安い奴なんとかP4Jとか言う奴で試して見ました。
Win98se、Excl2000SR1、メモリ256M(実際は255Mしか認識してない?)、MbCel750

起動直後、リソースの空き75%の状態(常駐ソフトの有無については無いとし、エクセル以外起動していない状態)で、同じく単純にデータを4500行まで作って試してみたら、なんてことなく4500個作れました。(II&の値で判断)
限界まで試そうかと思いましたが止めました。

と言う事だったんで、

>1GB over のデスクトップも同じ299この所で
>エラーになってしまいました。

ちょっと、信じられませんが...。

【4652】Re:解決と言う事ですが、参考までに。
質問  pino  - 03/4/1(火) 12:23 -

引用なし
パスワード
   Jaka さん 返答有り難うございます。
私も基本的にはWinノートで作業を行いたいと思っていますので
再度質問させてください。

Jakaさんは以前の回答で199行までしか作れなかったと返答してくれてますが、
以前とは何が変わったのですか?
私と同じように作っては消すというマクロを作成したのですか?
それとも、他に何か要因を見つけたのですか?

ご返答の程、宜しくお願いいたします。

【4658】Re:解決と言う事ですが、参考までに。
回答  Jaka  - 03/4/1(火) 13:40 -

引用なし
パスワード
   こんにちは。

>199行までしか作れなかったと返答してくれてますが、
違います。
そんなに作れませんでした。
たったの122個です。

>以前とは何が変わったのですか?
全然違うパソコンです。
122個作って123個目作ろうとしたときにエラーになっちやうパソコン(今、これ書いてる奴)のスペックは、
富士通のデスクトップで、Win98se、Excel97 SR-2、メモリ64M、Pen150、です。
因に、起動直後のリソースは、85%の空き(一応書いて起きます)。

Mac(OSペケは、知らない。)と違って割り当てメモリってのが無いから、実装メモリが全てみたいですね!

でも、

>Winだと256MBのラップトップも 1GB over のデスクトップも同じ299この所で
>エラーになってしまいました。
pinoさんのは、こうなっちゃたんですよね!
これがちょっと?なんですけど...。
私が、昨日テストしたノートでは、4500個までしか試してませんが4500は作れました。(数えてないけど)
もしかして、データに関数とか使ってませんか?
私は単純にA列〜IV列まで1〜256までの数字振って、4500行まで1〜4500までの数字が振ってあるデータで試しました。
もし関数とか使っていたなら、計算方法を手動にしてみるのも手かと思います。

>私と同じように作っては消すというマクロを作成したのですか?
>それとも、他に何か要因を見つけたのですか?
そう言う手の込んだ事は、一切行っておりません。pinoさんのマクロをそのまま使いました。

参考になりそうに無いですね!

【4675】ごめんなさい
発言  Jaka  - 03/4/2(水) 9:10 -

引用なし
パスワード
   なんか適当な事をのたまわっていたみたいです。
IF文の Exit for だけコメントにして実行していた性でした。
ほんとコードを良く見ないで適当な事を言って申し訳ありませんでした。
昨日もう一度IBMノートで試してみたら、640個までしか作れませんでした。

If CC% + Gx - 1 > 256 Then

を残したままだったんで、いくらでも作れるわけですよね!
本当にごめんなさい。
もう一度見てくれれば良いけど....。
世界規模で恥の上塗り...。

13604 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free