プロが教えるわが家の防犯対策術!

続きざまに質問させていただきます。EXCEL2000でグラフを作成するマクロ構文

例)~.Chart.SetSouceData Range(*****),xlColumns

で、「*****」の中に入力するデータの範囲が"可変"であり、なおかつ複数の範囲(例えば A1:B5とD1:D5 のように)を指定することをしたいのですが、どのようにすれば、実現ができますでしょうか?

Range()の引数はカンマで区切って2コの引数しか使用できません。
ですので、考え方としては、表示したい複数の範囲が収まる一つの範囲として、グラフを作成、→ 表示をしたくないデータ系列を削除する??
でいいのかなぁ??と思ったんですけど私のVBAハンドブックでは全く歯が立たないです。。。どなたかよろしくお願い致します。

A 回答 (2件)

うまく説明できるか分かりませんが、次のように事前にRangeのAddressを文字列で作って使用したりします。



  Dim grpAdr As String '文字列を定義
   ↓
  grpAdr = "D3:E10"
   ↓
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(grpAdr)


範囲の結合の場合は、当然、文字列操作でAddressを作れますが、多数になると各RangeをUnionで結合してアドレスを取得したほうが楽でしょう。
  Dim grpAdr1 As String '範囲1アドレス
  Dim grpAdr2 As String '範囲2アドレス
  Dim union_grpAdr As String '結合範囲アドレス
   ↓
  grpAdr1 = "D3:E13"
  grpAdr2 = "D15:E25"
  union_grpAdr = Union(Range(grpAdr1), Range(grpAdr2)).Address
   ↓
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(union_grpAdr)

  ※文字列の結合では union_grpAdr = grpAdr1 & "," & grpAdr2 でできます。

上では grpAdr1 = "D3:E13" のように範囲は固定ですが、
  Cot = 13 '←何かの計算で13が出たと思って下さい
  grpAdr1 = "D3:E" & Cot
と考えれば、文字列を作る時に可変領域の処理ができることになります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。大変助かります。本日試したところ、期待通りに実現できました。

> grpAdr1 = "D3:E" & Cot
というテクニックも知らず、プログラムコードが短縮できて、こちらとしては大変お得でした。本当にありがとうございます。

お礼日時:2002/04/16 09:24

私がExcelをわかってるわけじゃないんで、回答ではないんですが、わからないことがあると利用しているサイトをご紹介しておきます。



ここのQ&A掲示板には、質問をなげるとスゴイ勢いで回答が返ってきますよ。

参考サイト:モーグ

参考URL:http://www.moug.net
    • good
    • 0
この回答へのお礼

あ~助かります~。VBA歴は全く無いので、分からない事だらけで調べるだけで時間がかかってかかって・・・。 ありがとうございます。利用させていただきます。

お礼日時:2002/04/16 09:19

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