エクセルVBAの構文の質問です

このQ&Aのポイント
  • エクセルVBAの構文の質問です。上手く行かないRange文をCells文に変えたところ、エラーが出ます。どの部分が間違っているのでしょうか?
  • エクセルVBAの構文の質問です。Range文をCells文に変えたところ、エラーが発生しています。具体的には、2回目のRange文において'Cells'メソッドが失敗しているというエラーメッセージが表示されます。
  • エクセルVBAの構文の質問です。記録マクロで使用していたRange文をCells文に変えたところ、エラーが発生しています。変数で指定しているセル位置に問題があるのか、それとも構文自体に誤りがあるのかを教えてください。
回答を見る
  • ベストアンサー

エクセルVBAの構文の質問です。

エクセルVBAの構文の質問です。 グラフを作るのに列が固定ではないので記録マクロでは一部変更しなくては成らなくてその変更が上手く行きません、構文を記します。 Range("E11:E42").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E11:E42") ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" 上記が記録マクロの構文ですそのRange文をCells文に変えたのが以下です。 Range("Cells(r2, c3), Cells(r3, c3)).Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(r2, c3), Cells(r3, c3)) ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" Range文が2ヶ所有ると思いますが最初の文はOKで2回目のRange文で以下の以下のエラーが出ます。 「'Cells'メソッドは失敗しました。'Global'オブジェクト」 「r2 c2 r3 c3」はそれぞれ変数で上の方でr2=3とかc2=9と言う風にセル位置を与えています どちら様か当方の悩みを解決してください、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

Range("Cells(r2, c3), Cells(r3, c3)).Select 'これ選択しても意味がなさそう。はじめの"は邪魔、c3はc2じゃないの。 Charts.Add 'でグラフが選択される。 ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(r2, c3), Cells(r3, c3)) 'Cellsの場所がわからない。グラフ上で探そうとする。 ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r2, c2), Sheets("Sheet1").Cells(r3, c3)) にしなければだめ。 長くなるので、With文を使う。 With Sheets("Sheet1") ActiveChart.SetSourceData Source:=.Range(.Cells(r2, c2), .Cells(r3, c3)) End With とか。 ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"

thinkre
質問者

お礼

うわー、ばっちりです。 上手く行きました細かい指摘まで有っていました。 有り難うございました。

その他の回答 (1)

回答No.1

Sheets("Sheet1").Cells(r2, c3) のように、対象のワークシートを指定したらどうでしょうか。

thinkre
質問者

お礼

m-take0220さん 早々のご回答有り難うございます。 助かりました。

関連するQ&A

  • グラフ作成

    グラフ作成のマクロを作りたくて、マクロの記憶を用いて試してみたのですが、うまくいかないので、もしよろしければおしえてください。 選択範囲をアルファベットを用いたものではなく、cells(k,i)で表したいと思っています。 <マクロ> Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("元データ").Range( _ "A1:B1,A927:B987,Y1:Z1,Y927:Z987"), PlotBy:=xlColumns ’←このグラフ範囲をcells(,)の形式にしたい。 ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" どうぞよろしくお願いします。

  • エクセル2003のvba

    エクセル2003のvbaについて質問です 以下のようなマクロを作成したのですが Chart.SetSourceData メソッドのSheets(1)をマクロを実行した時点のアクティブシートにする方法を教えてください。 Sub グラフ() Charts.Add ActiveChart.ChartType = xlXYScatterLinesNoMarkers ActiveChart.SetSourceData Source:=Sheets(1).Range("n1:n100,q1:q100"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart.Axes(xlValue) .HasMajorGridlines = False End With ActiveChart.HasLegend = False end sub

  • Excel VBAで、散布図のデータ範囲が正しく指定されない

    VBA初心者です。 アクティブシート上に、散布図を作成したいのですが・・・ Dim mySheet, mySheetName Set mySheet = ActiveSheet mySheetName = ActiveSheet.Name Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=mySheet.Range("A1:C10") ActiveChart.Location Where:=xlLocationAsObject, Name:=mySheetName これを実行させた時アクティブなセルに数字が存在すると、データ範囲が「A1:C10」ではなく、アクティブなセルになってしまいます。 原因を教えていただけないでしょうか。よろしくお願いします。

  • VBAでCharts.Addで追加したShapesの名前をあらかじめ決めたい

    下記はグラフ作成を記録したマクロです。 このままでは"グラフ 2"という名前が自動的にきめられるのですが これをあらかじめ"graf1"などの任意の名前にしたいのですが、どうしたらいいでしょうか。 ActiveWindow.SmallScroll ToRight:=13 Range("T1:V11").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("T1:V11"), PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" ActiveChart.Axes(xlValue).Select ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 2").IncrementLeft -882# ActiveSheet.Shapes("グラフ 2").IncrementTop -140.25 ActiveWindow.Visible = False Windows("Book1").Activate Range("L11").Select

  • エクセルのマクロでグラフオブジェクトを指定位置に移動?

    お世話になります。 エクセル2000のマクロで困っています。 Range("indirect(AR69)").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("前年比").Range("indirect(AR69)"), PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="前年比 このマクロ(自動記述)でシート「前年比」にグラフオブジェクトを作りました。 このグラフを指定したセル位置に移動するのはどうすればいいでしょうか。 具体的にはセルAB5の左上の角にグラフの左上をピッタリ重ねたいのです。 あと、グラフオブジェクトに名前をつけて、このグラフを選択する時に名前で選択できるでしょうか。 "グラフ 6964"みたいに通し番号が付けられていて非常にやりにくいのですが。 よろしくお願いします。

  • Excel VBA グラフ作成のときのエラー

    VBA初心者です。Excel2003を使っています。 Sheet1に作りたいグラフがあります。 データは下記のとおりです。 ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A")のところで、「実行時エラー13 型が一致しません」とエラーがでます。 不思議なのは、昨日は動いていたのです。 なぜ、エラーが出るようになったのかわかりません。 ご教授よろしくお願いします。 A B 1 a 1 2 2 3 3 4 4 5 5 6 b 6 7 7 8 8 9 9 10 10 11 c 11 12 12 13 13 14 14 15 15 Sub test() Wrow = Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To Wrow If Worksheets("sheet1").Cells(i, "A").Value = "a" Then a_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "b" Then b_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "c" Then c_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "d" Then d_data = Worksheets("sheet1").Cells(i, "A").Row End If Next Sheets("sheet1").Select Range(Cells(a_data, "B"), Cells(b_data, "B")).Select ActiveSheet.ChartObjects.Add(30, 10, 500, 200).Select ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(a_data, "B"), Cells(b_data - 1, "B")), PlotBy:=xlColumns ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" Sheets("sheet1").Select ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A") ←エラーがでます。 ActiveChart.SeriesCollection(2).Values = Range(Cells(b_data, "B"), Cells(c_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(b_data, "A") ActiveChart.SeriesCollection(3).Values = Range(Cells(c_data, "B"), Cells(d_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(c_data, "A") End Sub

  • グラフマクロで系列を変数にする方法を教えてください

    エクセルのグラフマクロについて質問します。 系列のxの値(Yの値も)の設定で、 グラフ化したいワークシートと範囲を変数にすることはできますか? 目的は、複数あるシートの複数のセルをグラフ化したい、というものです。 変数にてシート名と範囲を指定したいです。 ↓のようなプログラムを作成してみましたが、どうもうまく動きません。 12行目で止まってしまいます。 13行目はでたらめですが、範囲も変数bにできないかなぁと、勝手にイメージで作ってみました。 Sub () n = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To n Sheets("SHEET1").Select Range("A" & i).Select a = ActiveCell.Value Sheets(a).Select Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets(a).Range("V22") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheets(a)!R2C4:R5C4" ActiveChart.SeriesCollection(1).Values = "=sheets(a)!range(b)" ActiveChart.Location Where:=xlLocationAsObject, Name:=Sheets(a) Next i End Sub 当方、マクロかじりたての初心者です。 どなたか、よろしくおねがいします!

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(\"J11:M35\"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets("sheet1").Range("J11:M35"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • エクセルのグラフのマクロでエラーが出てしまう

    グラフのマクロで Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("個人名シート").Range(.Cells(i, 4), .Cells(i, j - 1)), PlotBy _ :=xlRows X列項目範囲 = Range(.Cells(5, 4), .Cells(5, j - 1)) ActiveChart.SeriesCollection(1).XValues = X列項目範囲 ですが、X列項目範囲が1列だけ(4と変数j-1が同じ)だと最終行で 「実行時エラー'1004'; Series クラスの XValues プロパティを設定出来ません。」と出て しまいます。どなたかご教授下さい

専門家に質問してみよう