あるシステムからデータをエクセルに落とすため、毎回、行や列の数が変わります。
テキスト本を見て下のようなマクロを作成しましたが、うまくいきません。どなたか教えていただけないでしょうか。
Sub グラフシート作成()
Dim WS As Worksheet
Dim Crt As Chart
Range("A65536").End(xlUp).End(xlToRight).Activate
Range("A1:" & Selection.Address).Select
Set WS = Worksheets("Sheet1")
Set Crt = Charts.Add
With Crt
.ChartType = xl3DBarStacked
.SetSourceData Source:=WS.Range(ここに何を書けばいいのでしょうか?), PlotBy:=xlColumns
.Name = "野菜栄養価表"
End With
Set WS = Nothing
Set Crt = Nothing
End Sub
No.4ベストアンサー
- 回答日時:
Sub グラフシート作成()
Dim WS As Worksheet
Dim Crt As Chart
Set WS = Worksheets("Sheet1")
d = WS.Range("A65536").End(xlUp).Row
r = WS.Range("IV2").End(xlToLeft).Column
MsgBox d
MsgBox r
Set Crt = Charts.Add
With Crt
.ChartType = xl3DBarStacked
.SetSourceData Source:=WS.Range(WS.Range("A2"), WS.Cells(d, r)), _
PlotBy:=xlColumns
.Name = "野菜栄養価表"
End With
Set WS = Nothing
Set Crt = Nothing
End Sub
>範囲が毎回異なる
A.データの行数・列数が異なる
B.グラフに出したいデータ範囲が異なる
の2つの場合があり、前者として考えた。
No.2
- 回答日時:
セル範囲を選択しているので、SetSourceDataしなくてもグラフはプロットされるようです。
従って、コメントの(1)-a~(1)-d の部分は無くても大丈夫です。
お分かりとは思いますが、マクロ実行前にSheet1を開いてアクティブにしておく必要があります。
コメント(2)のようにしてシートを選択すれば、どのシートからでもマクロを実行できます。
Sub グラフシート作成test1()
'Dim WS As Worksheet '(1)-a
Dim Crt As Chart
Sheets("Sheet1").Select '(2)
Range("A65536").End(xlUp).End(xlToRight).Activate
Range("A1:" & Selection.Address).Select
'Set WS = Worksheets("Sheet1") '(1)-b
Set Crt = Charts.Add
With Crt
.ChartType = xl3DBarStacked
'.SetSourceData Source:=WS.Range, PlotBy:=xlColumns '(1)-c
.Name = "野菜栄養価表"
End With
'Set WS = Nothing '(1)-d
Set Crt = Nothing
End Sub
折角オブジェクト変数を使っているのですから、
下記のように、(3)-a~(3)-dを入れればSelectする必要はありません。
Sub グラフシート作成test2()
Dim WS As Worksheet
Dim Crt As Chart
Dim Drng As Range '(3)-a
Set WS = Worksheets("Sheet1")
Set Drng = WS.Range("A1", WS.Range("A65536").End(xlUp).End(xlToRight)) '(3)-b
Set Crt = Charts.Add
With Crt
.ChartType = xl3DBarStacked
.SetSourceData Source:=Drng, PlotBy:=xlColumns '(3)-c
.Name = "野菜栄養価表"
End With
Set WS = Nothing
Set Crt = Nothing
Set Drng = Nothing '(3)-d
End Sub
ただし、いくつか問題があります。
1)、A列のデータが数字の場合、A列データもプロットされます。文字列ならプロットされないので問題はないように思われます。
2)、マクロを実行する度にグラフシートが挿入され同じ名前をつけようとするのでエラーになります。
ここら辺はどうしようとお考えでしょうか?
No.1
- 回答日時:
すみません。
全く試していませんがデータ単位を>Range("A1:" & Selection.Address).Select
で選択しているなら
SetSourceData Source:=Selection, PlotBy:=xlColumns
で良いかもしれません。あるいは
SetSourceData Source:=Range("A1:" & Selection.Address), PlotBy:=xlColumns
ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
エクセルの縦軸(Y軸)が不均等...
-
Excelでx軸とy軸を設定して図を...
-
Excel:別シートにグラフを貼り...
-
EXCELでグラフを作るとき、縦軸...
-
エクセルで折れ線と散布図を同...
-
エクセルで折れ線グラフ(散布...
-
エクセルで式からグラフを作成...
-
座標ポイントによるグラフの描き方
-
エクセルで、極座表のグラフ描...
-
Excelで未知数を含む式をグラフ...
-
エクセル 0や空白のセルをグラ...
-
散布図を縦に2個並べて出力したい
-
エクセル グラフはあるけれど...
-
ExcelでIF関数によるグラフの表...
-
<EXCELグラフ>データ取得範囲...
-
エクセルの対数グラフのエラー
-
エクセルの円を5等分する方法
-
エクセルグラフの項目名を折り...
-
EXCELのグラフ作成時に元データ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
EXCELでグラフを作るとき、縦軸...
-
エクセルの縦軸(Y軸)が不均等...
-
Excel:別シートにグラフを貼り...
-
エクセルの円を5等分する方法
-
Excelでx軸とy軸を設定して図を...
-
エクセルで折れ線と散布図を同...
-
エクセル 0や空白のセルをグラ...
-
エクセルで折れ線グラフ(散布...
-
エクセルの対数グラフのエラー
-
エクセルで、極座表のグラフ描...
-
Excelのグラフ軸について
-
<EXCELグラフ>データ取得範囲...
-
エクセル グラフの”データーテ...
-
ExcelでIF関数によるグラフの表...
-
散布図を縦に2個並べて出力したい
-
EXCELのグラフ作成時に元データ...
-
エクセルで式からグラフを作成...
-
Excelグラフの有効数字の統一が...
-
Excelの横棒グラフのプロットエ...
おすすめ情報