
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
VBA実行後に元のセルに戻りたい
-
特定のセルが空白だったら、そ...
-
Excel VBA マクロ ある列の最終...
-
vba 隣のセルに値がある行だけ...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
-
VBAでセルをクリックする回...
-
VBSでエクセル内の行数を取得す...
-
i=cells(Rows.Count, 1)とi=cel...
-
”戻り値”が変化したときに、マ...
-
特定の文字を条件に行挿入とそ...
-
ExcelのVBAで数字と文字列をマ...
-
3桁または4桁の数値を時刻に...
-
Excelのプルダウンで2列分の情...
-
クリックされたセルの位置を取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
VBA実行後に元のセルに戻りたい
-
特定のセルが空白だったら、そ...
-
【Excel】指定したセルの名前で...
-
”戻り値”が変化したときに、マ...
-
【EXCEL VBA】Range("A:A").Fi...
-
エクセルvbaで、別シートの最下...
-
連続する複数のセル値がすべて0...
-
セル色なしの行一括削除
-
Excel VBA マクロ ある列の最終...
-
VBAでセルをクリックする回...
-
特定の文字を条件に行挿入とそ...
-
Excel vbaで特定の文字以外が入...
-
Excelのプルダウンで2列分の情...
-
VBからEXCELのセルの値を取得す...
-
EXCELで変数をペーストしたい
-
vba 隣のセルに値がある行だけ...
おすすめ情報