Excel VBA質問箱 IV

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

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


28 / 13618 ツリー ←次へ | 前へ→

【82158】グラフのコピー あおこ 23/6/12(月) 15:00 質問[未読]

【82168】Re:ディメンションが無効 あおこ 23/6/16(金) 10:58 お礼[未読]
【82169】Re:ディメンションが無効 マナ 23/6/16(金) 21:24 発言[未読]
【82170】Re:ディメンションが無効 あおこ 23/6/20(火) 10:22 お礼[未読]

【82168】Re:ディメンションが無効
お礼  あおこ  - 23/6/16(金) 10:58 -

引用なし
パスワード
   ▼マナ さん:
>>当初問題なく動いていたのですが、突然
>> cho.Copy のところで
>>「指定したディメンションは、このグラフの種類では無効です。」
>>のエラーが出るようになりました。(再実行すれば作成されますし、出ないときもあります。)
>>  Set cho = sh_A3.ChartObjects(1).Duplicate.Parent 'コピー元のグラフを複製
>
>DoEventsをこの次に移動あるいは追加してみてはどうでしょうか。
追加してみました。

全学校分のグラフを作るコードと、指定学校分を作るコードの2種類をグラフ元のデータ作成箇所以外、同じコードで作っておりまして、
よくよく調べたら、全学校分の方のみエラーが出ておりましたので、
改めて見比べたら、
Dim cho As ChartObjectを記載していませんでした。
記載したら発生しなくなりましたが、これが原因でしょうか。
いずれにせよ、宣言を忘れないようにします。

>>
>>それから、下記のコードでは、まれに応答なしになって落ちるため、
>
>同じデータで、応答なしになるのでしょうか。
そうだったのです・・。

>>コードの問題点等あればご指摘いただけませんでしょうか。
>
>>   GYO1 = GYO ' グループの先頭行→GYO1
>>   GYO = GYO + 1    ←この行は必要でしょうか?
>
Do While .Cells(GYO, 1).Value <> ""
GYO1 = GYO ' グループの先頭行→GYO1
GYO = GYO + 1 ←A
' 次の行から同じグループでない行を見つける
Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
   GYO = GYO + 1
Loop
GYO2 = GYO  ' 同じグループの最終行→GYO2
GYO = GYO + 1 ←B
〜省略〜
Loop

タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。
元々 A学校のデータが複数行、B学校のデータが複数行、・・とあるときに、A学校のデータをグループ化するということをしたくて、ネットで見つけたコードです。
よく使用しているので、応用して作っておりますが、良い方法があれば教えていただけると幸いです。
      (1列)
(タイトル行)質問  
(データ行)A学校名
(データ行)B学校名
(データ行) ・
(データ行) ・
(合計行)  合計
※全学校分のデータ例 
※指定学校分は 「質問、A学校名、合計」の3行のデータ構成だが、今後、選択した複数校のデータをもとにグラフ化したいため、汎用性のあるグループ化を行いたい。

>>   .Range(.Cells(GYO1, 2), .Cells(GYO2, lastcol1 - 1)).Select  
>>    Set r = Selection
>ここはSelectしないで、1行にまとめてはどうでしょうか
>Set r = .Range(.Cells(GYO1, 2), .Cells(GYO2, lastcol1 - 1))
まとめてみました。ご教示ありがとうございます。

>
>グラフの個数でなく、GYOを確認してみてはどうでしょうか。
GYOを確認するよう変更してみましたが、
ご指摘いただいた点を修正したところ、繰り返しても落ちなくなりました。
何かがよかったのでしょうか??

何度もお手を煩わせてしまいましたが、何とかなりそうです。
本当にありがとうございました!
(といいつつまたお尋ねするかもしれません;。その節はご回答いただけると幸いです。)

【82169】Re:ディメンションが無効
発言  マナ  - 23/6/16(金) 21:24 -

引用なし
パスワード
   ▼あおこ さん:

>タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。

Aの行はなくても、↓のDo While 〜Loop内で、処理されると思いました。

>Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
>   GYO = GYO + 1
>Loop

【82170】Re:ディメンションが無効
お礼  あおこ  - 23/6/20(火) 10:22 -

引用なし
パスワード
   ▼マナ さん:
>▼あおこ さん:
>
>>タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。
>
>Aの行はなくても、↓のDo While 〜Loop内で、処理されると思いました。
>
>>Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
>>   GYO = GYO + 1
>>Loop

確かにそうですね!
もともとあるものを継ぎ足して作ることが多いので、いろいろと無駄が多い、、。

今回いろいろ教えていただき、本当に助かりました。
ありがとうございました。

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