Excel VBA質問箱 IV

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

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


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

【12967】マクロ実行するたびに列の参照を+1にした... washi 04/4/20(火) 16:21 質問
【12987】Re:マクロ実行するたびに列の参照を+1にし... ちん 04/4/20(火) 18:54 回答
【12992】Re:マクロ実行するたびに列の参照を+1に... washi 04/4/20(火) 19:27 質問
【12994】Re:マクロ実行するたびに列の参照を+1に... Asaki 04/4/20(火) 19:49 回答
【12996】Re:マクロ実行するたびに列の参照を+1に... washi 04/4/20(火) 20:10 質問
【12997】Re:マクロ実行するたびに列の参照を+1に... Asaki 04/4/20(火) 20:13 回答
【13001】Re:マクロ実行するたびに列の参照を+1に... washi 04/4/20(火) 21:04 質問
【13003】Re:マクロ実行するたびに列の参照を+1に... Asaki 04/4/20(火) 22:01 回答
【13004】Re:マクロ実行するたびに列の参照を+1に... Asaki 04/4/20(火) 23:20 回答
【13014】Re:マクロ実行するたびに列の参照を+1に... washi 04/4/21(水) 10:46 お礼

【12967】マクロ実行するたびに列の参照を+1にした...
質問  washi  - 04/4/20(火) 16:21 -

引用なし
パスワード
   グラフで1日毎の推移を作成しているのですが、
品目が多く、グラフにするのが大変です。
ひとつのグラフで全ての品目の推移が見れるような、マクロを組んでいるのですが、
なかなかうまくいきません、どなたかご教授ください。

1.クロス集計を元にグラフを作っています
    合計 品目・・・

 日付 数値 数値
  :
 :
2.別のシートにグラフを作成し、ボタンにマクロを組み込んで押すたびに、
 次の品目のグラフがでるマクロを作成したいです。

3.次のようなマクロ(自動生成ですが)を組んでみました。
 Sub Next()

  ActiveSheet.ChartObjects("グラフ 1").Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SetSourceData Source:=Sheets("クロス集計ver2").Range( _
    "A:A,C:C"), PlotBy:=xlColumns

End Sub
しかし、ここから先に進めません「.Range( _"A:A,C:C")」の部分の
「C:C」の部分がボタンを押すたびに+1にさせるには、
どうしたらよいのでしょうか?

すみませんがどなたかご教授下さい、宜しくお願いします。

【12987】Re:マクロ実行するたびに列の参照を+1に...
回答  ちん  - 04/4/20(火) 18:54 -

引用なし
パスワード
   washi さん こんばんは、ちんといいます。
▼washi さん:
>グラフで1日毎の推移を作成しているのですが、
>品目が多く、グラフにするのが大変です。
>ひとつのグラフで全ての品目の推移が見れるような、マクロを組んでいるのですが、
>なかなかうまくいきません、どなたかご教授ください。
>
>1.クロス集計を元にグラフを作っています
>    合計 品目・・・
>
> 日付 数値 数値
>  :
>  :
>2.別のシートにグラフを作成し、ボタンにマクロを組み込んで押すたびに、
> 次の品目のグラフがでるマクロを作成したいです。
>
>3.次のようなマクロ(自動生成ですが)を組んでみました。
> Sub Next()
>
>  ActiveSheet.ChartObjects("グラフ 1").Activate
>  ActiveChart.ChartArea.Select
>  ActiveChart.SetSourceData Source:=Sheets("クロス集計ver2").Range( _
>    "A:A,C:C"), PlotBy:=xlColumns
>
> End Sub
>しかし、ここから先に進めません「.Range( _"A:A,C:C")」の部分の
>「C:C」の部分がボタンを押すたびに+1にさせるには、
>どうしたらよいのでしょうか?
>
>すみませんがどなたかご教授下さい、宜しくお願いします。

ボタン操作で、+1していくには、
Dim Count1 as Integer  <-- この行をSUBの最上位行へ定義して下さい。
SUB NEXT()
End SUB

C:C をかえるのでしたら、Range=>Cells に変更した方がよいです。

以上、

【12992】Re:マクロ実行するたびに列の参照を+1に...
質問  washi  - 04/4/20(火) 19:27 -

引用なし
パスワード
   ちんさん、こんばんわ、ご回答ありがとうございます!
今度はこのようなマクロにしてみました。
しかし、うまくいきません・・・参照が+1にならないようなんです・・・
あと、Range=>Cellsにしてみました所、型が一致しませんと怒られてしまいます・・・

すみませんがもう一度ご教授願います・・・

Dim Count1 As Integer
Private Sub CommandButton1_Click()

  ActiveSheet.ChartObjects("グラフ 1").Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SetSourceData Source:=Sheets("クロス集計").Range( _
    "A:A,C:C"), PlotBy:=xlColumns

End Sub

【12994】Re:マクロ実行するたびに列の参照を+1に...
回答  Asaki  - 04/4/20(火) 19:49 -

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

途中に
Count1 = Count1 + 1
の処理も必要でしょう。

>Range("A:A,C:C")

Union(Columns(1), Columns(3 + Count1))
ではどうでしょうか?

【12996】Re:マクロ実行するたびに列の参照を+1に...
質問  washi  - 04/4/20(火) 20:10 -

引用なし
パスワード
   ▼Asaki さん:
>こんにちは。
>
>途中に
>Count1 = Count1 + 1
>の処理も必要でしょう。
>
>>Range("A:A,C:C")
> ↓
>Union(Columns(1), Columns(3 + Count1))
>ではどうでしょうか?

Asakiさん、こんばんわ。
ご返信ありがとうございます!
試してみました所、たぶん・・・もう少しだとは思うのですが、
今度は「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」
と言う、エラーが出てしまいます・・・
何か特別な設定をする必要があるのでしょうか???
このようなプログラムまでは組めたのですが、何かおかしいですかね・・・

たびたび、申し訳ないですが、ご教授お願いします。

Dim Count1 As Integer
Private Sub CommandButton1_Click()

Count1 = Count1 + 1

  ActiveSheet.ChartObjects("グラフ 1").Activate
  ActiveChart.ChartArea.Select
  ActiveChart.SetSourceData Source:=Sheets("クロス集計").Union( _
  Columns(1), Columns(3 + Count1)), PlotBy:=xlColumns

End Sub

【12997】Re:マクロ実行するたびに列の参照を+1に...
回答  Asaki  - 04/4/20(火) 20:13 -

引用なし
パスワード
   一旦、Range型の変数に対象を設定してするのはどうでしょうか?
確かに、直接利用すると上手くいかないかもしれません。

例えば
Dim c As Range
 '(略)
set c = Sheets("クロス集計").Union(Columns(1), Columns(3 + Count1))
ActiveChart.SetSourceData Source:=c, PlotBy:=xlColumns
set c = noting

【13001】Re:マクロ実行するたびに列の参照を+1に...
質問  washi  - 04/4/20(火) 21:04 -

引用なし
パスワード
   ▼Asaki さん:
>一旦、Range型の変数に対象を設定してするのはどうでしょうか?
>確かに、直接利用すると上手くいかないかもしれません。
>
>例えば
>Dim c As Range
> '(略)
>set c = Sheets("クロス集計").Union(Columns(1), Columns(3 + Count1))
>ActiveChart.SetSourceData Source:=c, PlotBy:=xlColumns
>set c = noting

色々頑張ってます!
しかし・・・
試してはいるのですが、うまくいきません・・・
少し思ったのですが、参照する所をその都度、取得しないといけないみたいです。
その、取得した場所に+1をしてあげないと、永遠に「Columns(3 + Count1)」
の状態ですよね?

「列の参照場所を現在の参照場所から+1にしたい」というのが正しい
タイトルだと思いました・・・すみません!

もう少し頑張りますので、ご教授願います!

【13003】Re:マクロ実行するたびに列の参照を+1に...
回答  Asaki  - 04/4/20(火) 22:01 -

引用なし
パスワード
   >少し思ったのですが、参照する所をその都度、取得しないといけないみたいです。
>その、取得した場所に+1をしてあげないと、永遠に「Columns(3 + Count1)」
>の状態ですよね?
意味がよく判りません。

1) ボタンをクリックするたびに、Next()が実行される
2) このとき、Source のところが
1回目:AとC列
2回目:AとD列
のように変わる

と思ってるんですけど、違いますか?

2のために、Count1をカウントアップする処理を入れてるんですけど。

【13004】Re:マクロ実行するたびに列の参照を+1に...
回答  Asaki  - 04/4/20(火) 23:20 -

引用なし
パスワード
   ごめんなさい。

とりあえず、シートの参照位置が間違ってました。
正しくは、
Set c = Union(Sheets("クロス集計").Columns(1), Sheets("クロス集計").Columns(3 + Count1))

で、今現在、どのようなプログラムになっていますか?
一度、全体をupしていただけませんか?

【13014】Re:マクロ実行するたびに列の参照を+1に...
お礼  washi  - 04/4/21(水) 10:46 -

引用なし
パスワード
   Asaki さん
おはようございます!
夜通し悩んだすえ(えぇ!)できました!
この、下のプログラムを組んであげたら、うまくいきました!
ありがとうございます!

>Set c = Union(Sheets("クロス集計").Columns(1), Sheets("クロス集計").Columns(3 + Count1))
>
>で、今現在、どのようなプログラムになっていますか?
>一度、全体をupしていただけませんか?

とりあえず、最終プログラムです。↓
あとはif文か何かを組んであげて、参照列が3以下の場合は戻らない様にする、
設定を組んでみます!
またわからない事があったらご教授ください!
ありがとうございました!

Dim Count1 As Integer
Dim C As Range

'進むボタン設定
Private Sub CommandButton1_Click()

Count1 = Count1 + 1

  ActiveSheet.ChartObjects("グラフ 1").Activate
  ActiveChart.ChartArea.Select

  Set C = Union(Sheets("クロス集計").Columns(1), Sheets("クロス集計").Columns(3 + Count1))
  ActiveChart.SetSourceData Source:=C, PlotBy:=xlColumns

End Sub

'戻るボタン設定
Private Sub CommandButton2_Click()

Count1 = Count1 - 1

  ActiveSheet.ChartObjects("グラフ 1").Activate
  ActiveChart.ChartArea.Select

  Set C = Union(Sheets("クロス集計").Columns(1), Sheets("クロス集計").Columns(3 + Count1))
  ActiveChart.SetSourceData Source:=C, PlotBy:=xlColumns

End Sub

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