Function rr(v)
rr = WorksheetFunction.Average(Range(Cells(v.Row, (v.Column - 2)), Cells(v.Row, (v.Column + 2))))
End Function
選択されたセルの前後±2で平均をとるマクロなのですが、なぜかうまくいきません、どこが間違っていますでしょうか?
For i = 4 To 8・・・
・・・ActiveChart.SeriesCollection(1).Values = "=graph!R13C" & i & ":R1013C" & i
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="=graph!R12C" & i
・・・
Next
という感じで複数のセルより自動的にグラフを生成するマクロ作成したのですが、このgraphという部分を現在選択しているシートにするにはどうすれば良いのでしょうか?
それと生成するグラフのタイトルをName:="=graph!R12C" & i
としてもうまくこのセルから中身を取り出すことができないのですが、
どこを変更すれば良いのでしょうか?
何卒よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
#1です。
Sub test()
Set sh1 = Workbooks("Book1.xls").Sheets(1)
'これがないとだめ。ブック名やシート名は適宜。
For i = 4 To 8
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
'ActiveChart.SeriesCollection(1).XValues = Range(Cells(13, 1), Cells(1013, 1))
'ActiveChart.SeriesCollection(1).Values = Range(Cells(13, i), Cells(1013, i))
'ActiveChart.SeriesCollection(1).Name = Cells(12, i)
'ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Cells(12, i)
'Activeなのがグラフシートだから、グラフシートにはセルなんかないから上記のような指定はだめ。オブジェクトを指定してやる。下記。
ActiveChart.SeriesCollection(1).XValues = sh1.Range(sh1.Cells(13, 1), sh1.Cells(1013, 1))
ActiveChart.SeriesCollection(1).Values = sh1.Range(sh1.Cells(13, i), sh1.Cells(1013, i))
ActiveChart.SeriesCollection(1).Name = sh1.Cells(12, i)
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=sh1.Cells(12, i)
With ActiveChart
'.HasTitle = False
'これはだめ。あとでTitleを参照するから。下記。Titleは適宜。
.HasTitle = True
.ChartTitle.Text = "XXXX"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y"
End With
ActiveChart.PlotArea.Select
Selection.ClearFormats
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Next
End Sub
こんなところだが、軸を決めるというのは、目盛のことかな。
With .ChartObjects(2).Chart
With .Axes(xlValue)
.MinimumScale =最小値
.MaximumScale = 最大値
.MinorUnit = 補助目盛間隔
.MajorUnit = 目盛間隔
.ScaleType = xlLinear
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With .Axes(xlCategory)
.TickLabelSpacing = ラベル間隔
.TickMarkSpacing = 目盛をつける間隔
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
End With
などのようなことか。
No.2
- 回答日時:
最初の部分だけやってみたので参考まで挙げます
Function rr(v)
c = v.Column
If c <= 2 Then GoTo err1
Set v = v.Offset(0, -2)
Set v = v.Resize(1, v.Cells.Count + 4)
MsgBox v.Address
rr = WorksheetFunction.Average(v)
Exit Function
err1:
rr = "err"
End Function
ーーー
Sub test01()
Set v = Range("C1:E1") '<--ここを適当に変えてテストのこと
x = rr(v)
If x = "err" Then GoTo err2
MsgBox x
Exit Sub
err2:
MsgBox "列指定エラー"
End Sub
--------
例データ
A1:G1
1234812
結果
3
---
回答ではRangeの引渡しがうまく行かないのでは?
No.1
- 回答日時:
1.
動作すると思いますが、vの指定が違っていませんか。
この関数を埋め込むセルを平均の対象になるように選択していませんか。下記の例だと、vの指定はこの関数を埋め込むセルの列より3列以上左側にないとだめですよ。
Function rr(v)
rr = WorksheetFunction.Average(Range(Cells(v.Row, v.Column - 2), Cells(v.Row, v.Column + 2)))
End Function
2.
どうしたいのかいまいちです。
意味のないことをしているように見えますが。
ActiveChart.SeriesCollection(1).Values = "=graph!R13C" & i & ":R1013C" & i
iが変わっても、SeriesCollection(1)ですよね。変えた意味がないような。
set sh1=workbooks("xxx.xls").sheets(1)
set sh2=workbooks("xxx.xls").sheets(2)
sh1.ChartObjects(1).Chart.SeriesCollection(1).Values = sh2.Range(sh2.Cells(13, i), sh2.Cells(101, i))
sh1.ChartObjects(1).Chart.SeriesCollection(1).Name = sh2.Cells(12, i)
というようなことなのかな。
ありがとうございます。
2つめの質問なのですが、
For i = 4 To 8
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = Range(Cells(13, 1), Cells(1013, 1))
ActiveChart.SeriesCollection(1).Values = Range(Cells(13, i), Cells(1013, i))
ActiveChart.SeriesCollection(1).Name = Cells(12, i)
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Cells(12, i)
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y"
End With
ActiveChart.PlotArea.Select
Selection.ClearFormats
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
・・・
Next
End Sub
頂いた回答をもとに改良を加えてみたのですが、
ActiveChart.SeriesCollection(1).XValues あたりでエラーが出てきます。sh2.Range(sh2.Cells(13, i), sh2.Cells(101, i))
みたいに、シートを含むかたちで書いてもエラーが出てきます。どこをどうすれば良いのでしょうか?
それとグラフのx軸、y軸をグラフ生成の時点で決定することはできないのでしょうか?
何卒よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
VBAでセル同士を比較して色付け
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
セル色なしの行一括削除
-
TODAY()で設定したセルの日付...
-
EXCELで変数をペーストしたい
-
VBAでマクロ実行中はExcelのマ...
-
DataGridViewのセル編集完了後...
-
VBからEXCELのセルの値を取得す...
-
”戻り値”が変化したときに、マ...
-
連続する複数のセル値がすべて0...
-
エクセルVBAでコピーして順...
-
エクセルマクロでアニメを作る...
-
Excel2003 複数セル1列の入力済...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
特定の文字を条件に行挿入とそ...
-
EXCELで変数をペーストしたい
-
エクセルVBAでコピーして順...
-
TODAY()で設定したセルの日付...
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
VBA実行後に元のセルに戻りたい
-
【Excel】指定したセルの名前で...
-
”戻り値”が変化したときに、マ...
-
Excel vbaで特定の文字以外が入...
-
EXCELのVBA-フィルタ抽出後の...
-
指定した条件で行セルを非表示...
-
VBA初心者です。結合セルを保持...
-
ExcelのVBAで数字と文字列をマ...
おすすめ情報