Excel VBA質問箱 IV

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

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


6256 / 13644 ツリー ←次へ | 前へ→

【46336】グラフの追加 oda 07/1/31(水) 11:19 質問[未読]
【46338】Re:グラフの追加 Kein 07/1/31(水) 11:43 回答[未読]
【46343】Re:グラフの追加 oda 07/1/31(水) 16:40 質問[未読]
【46352】Re:グラフの追加 Kein 07/1/31(水) 17:18 発言[未読]
【46359】Re:グラフの追加 マクラー 07/1/31(水) 19:18 発言[未読]

【46336】グラフの追加
質問  oda  - 07/1/31(水) 11:19 -

引用なし
パスワード
   グラフ作成を自動化しようとしていますが、ループが上手くできません。

各値(*)は、別途インプットボックスにて取得します。
ループの数は最終的にはユーザーが選択して終了するまでになります。
(a)の値を回し同じグラフに書きたいのですが、2順目からはエラーが出て
止まってしまう状況です。

以下その部分のソースです


Sub sample1()
 For a = 1 To 5
  ActiveChart.SeriesCollection.NewSeries
  With ActiveChart.SeriesCollection(a)
  .ChartType = xlLine
  .XValues = Range(*)
  .Values = Range(*)
  .Name = Range(*)
  End With
  a = a + 1
 Next
End Sub

aは無事ループしていますが、代入するとエラーになる様で、そもそも
やり方が悪いのかすら分からない状況です。
どうか御助けねがいます。

【46338】Re:グラフの追加
回答  Kein  - 07/1/31(水) 11:43 -

引用なし
パスワード
   >a = a + 1
For 〜 Next の構文内で、カウンタ変数の値を増減するのは止めた方がいいです。
こんなコードで試してみて下さい。

Sub sample1()
  Dim a As Integer

  For a = 1 To 5
   With ActiveChart.SeriesCollection.NewSeries
     .ChartType = xlLine
     .XValues = Range(*)
     .Values = Range(*)
     .Name = Range(*)
   End With
  Next a
End Sub

【46343】Re:グラフの追加
質問  oda  - 07/1/31(水) 16:40 -

引用なし
パスワード
   ▼Kein さん:
ありがとうございます。ループの部分は動作しました

Dim ThisSheet_Name As String
  Dim a As Long
  For a = 1 To 5
   ActiveChart.SeriesCollection.NewSeries・・1.
   With ActiveChart.SeriesCollection(a)
    .ChartType = xlLine
    .XValues = Range(*)
    .Values = Range(*)
    .Name = Range()
   End With
  Next a

これに例えば
 Dim nameCell As Range
 Set nameCell = Application.InputBox(Prompt:="y軸の項目名があるセルを選択してください。", Default:="A1", Type:=8)
 nameCell.Select
k = nameCell.Address
こんな感じにグラフの系列になるDataを取得させ引数化させ、最終的に(*)の部分
に代入させるのですが、1順めが終わったところで1.の部分がエラーになり停止して
しまいます。新しくもう1枚のグラフを書くようにすると、1順目で1枚2順目で2枚・・・
と動作するのですが・・・。何か命令が足りないのでしょうか。

【46352】Re:グラフの追加
発言  Kein  - 07/1/31(水) 17:18 -

引用なし
パスワード
   まず複数の系列があるグラフの場合、ふつうは「項目軸としてプロットする範囲
は一つ、数値軸にプロットする範囲は飛び飛びの行(又は列)か並んだ行(又は列)」
になりますよね ? それを前提にすると、項目軸範囲はループに入る前から固定値
として用意されていて、数値軸にプロットするところだけを任意に指定する形
とするのが自然です。それも "てんでバラバラ好き勝ってなところ" を指定した
のでは、まともなグラフになりません。なので、"任意とはいえ限られた範囲から
選択して指定することしかできない" ようにしておいた方が確実ですね。
そのためにはリストボックスの活用がふさわしいと思いますが、もしサンプルコード
をお望みなら、グラフの元になる表の具体的なデータの配置状態が分からないと
できません。よければそれを提示してみて下さい。

【46359】Re:グラフの追加
発言  マクラー  - 07/1/31(水) 19:18 -

引用なし
パスワード
   ▼oda さん:

>しまいます。新しくもう1枚のグラフを書くようにすると、1順目で1枚2順目で2枚・・・
>と動作するのですが・・・。何か命令が足りないのでしょうか。

グラフを指定していないとかではないでしょうか

ActiveSheet.ChartObjects("グラフ 1").Activate
とかいうような構文だったかと。
その前に、これでは名前が作るたびに変わるのでダメすかね。
グラフを作る時に名前が付けられたと思うのですが
私もそこまでは良くわかりません。
どなた様かの助言を待ちましょう・・他力本願

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