Excel VBA質問箱 IV

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

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


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

【73875】任意のデータ範囲をグラフ化させるSetSourceDataの書き方 アイマール 13/2/27(水) 0:32 質問[未読]
【73881】Re:任意のデータ範囲をグラフ化させるSetS... kanabun 13/2/27(水) 21:05 発言[未読]
【73882】Re:任意のデータ範囲をグラフ化させるSetS... kanabun 13/2/27(水) 21:13 発言[未読]
【73883】Re:任意のデータ範囲をグラフ化させるSetS... kimagure 13/2/28(木) 7:44 回答[未読]

【73875】任意のデータ範囲をグラフ化させるSetSo...
質問  アイマール  - 13/2/27(水) 0:32 -

引用なし
パスワード
   Excelを開く準備、グラフを作成するために、下記の宣言を行い、
あるデータ範囲をグラフさせようとしています。

Dim xlApp As Excel.Application
Dim xlBoo As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim sheet_bangou As Byte

Dim Gra As ChartObject
Dim Gra1 As Chart

Set xlApp = CreateObject("Excel.Application")
Set xlSheet = xlBoo.Worksheets(sheet_bangou)

(中略) ここまでのsheet_bangou の値は3です。

xlBoo.Worksheets(sheet_bangou).Copy After:=xlBoo.Worksheets(sheet_bangou) 'sheet_bangou が 3 であるWorksheetにあるデータ内容をsheet_bangou が 3 の右にコピーしています。
xlBoo.ActiveSheet.Name = "グラフィック" 'アクティブシート(4番目のシート)の名前をグラフィック に変更します。
sheet_bangou = sheet_bangou + 1 'sheet_bangou を4とする
Set xlSheet = xlBoo.Worksheets(sheet_bangou)

'グラフ化

グラフ化はシート番号が4のところで表示、データ参照時は、
シート番号が4の、Cells(4,3)〜Cells(4,6)と、Cells(8,3)〜Cells(8,6)を指定したい。
すなわち、Cells(5,3)〜Cells(7,6)までは参照範囲に含まれません。

上記を SetSourceData の後で書きたい。

Set Gra = xlSheet.ChartObject.Add(100,100,100,100)
Set Gra1 = Gra.Chart

With Gra1

 .SetSourceData xlSheet.Range() ←ここの部分が不明
 .HasTitle = True
 .ChartTitle.Text = "テスト画面"
 (略)

End With

(略)

Cells(4,3)〜Cells(4,6)と、Cells(8,3)〜Cells(8,6)の両方を参照させるためには、
どういう風に書けば良いでしょうか。

.SetSourceData xlSheet.Range(xlSheet.Cells(4, 3), xlSheet.Cells(4,6)) で、
Cells(4,3)〜Cells(4,6)まで参照できますが、

Cells(8,3)〜Cells(8,6)を含んだ書き方をいろいろ書いてみても、
よく、Cells(4,3)〜Cells(8,6)まで全て参照して困っています。

ご教示、ヒントを頂けないでしょうか。

【73881】Re:任意のデータ範囲をグラフ化させるSe...
発言  kanabun  - 13/2/27(水) 21:05 -

引用なし
パスワード
   ▼アイマール さん:

>シート番号が4の、Cells(4,3)〜Cells(4,6)と、Cells(8,3)〜Cells(8,6)を指定したい。
> Cells(5,3)〜Cells(7,6)までは参照範囲に含まれません。
>
>上記を SetSourceData の後で書きたい。

.SetSourceData Union(Sheets(4).Cells(4,3).Resize(,4), _
          Sheets(4).Cells(8,3).Resize(,4))

みたいな方法を試してください。

【73882】Re:任意のデータ範囲をグラフ化させるSe...
発言  kanabun  - 13/2/27(水) 21:13 -

引用なし
パスワード
   ▼アイマール さん:
そういえば、(これは本題とは関係ありませんが)
最初の宣言部分↓

>Excelを開く準備、グラフを作成するために、下記の宣言を行い、
>あるデータ範囲をグラフさせようとしています。
>
>Dim xlApp As Excel.Application
>Dim xlBoo As Excel.Workbook
>Dim xlSheet As Excel.Worksheet

まず、このコードはExcelから実行しようとしているのではないですか?
もしそうだとしたら、
>Dim xlApp As Excel.Application
と別のExcelを立ち上げる必要はないのでは?

あと、
>Dim sheet_bangou As Byte
この際、バイト型である必要はないでしょう。Long型でOKです。

【73883】Re:任意のデータ範囲をグラフ化させるSe...
回答  kimagure  - 13/2/28(木) 7:44 -

引用なし
パスワード
   そのまま直接書くと

.SetSourceData Sheets(4).Range("C3:F3,C8:F8")

とか、.SetSourceDataを使わずに

With .SeriesCollection(1)
  .XValues = Sheets(4).Cells(4, 3).Resize(, 4)
  .Values = Sheets(4).Cells(8, 3).Resize(, 4)
End With

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