ExcelVBAのそれほど詳しくは無い者です。
表の下に作成されたグラフのグラフタイトルの有無やグラフの種類を調べて、
正しいかを判断し、セルに結果を表示するものを作っていますが、どうしても
グラフの系列をセルに書き出せず、困っています。
セルに書き出したい理由は、書き出された式と予め設定した式が一致する
かを確認して結果を別のセルに表示させたいためです。
以下のようにしています。
=SERIESから始まる式をmsgBoxには表示できるのですが、msgBoxではなく
結果をセルに書き出すにはどうすればよいのでしょうか。
セルに式を代入するように書いてみたのですが、書き方が悪かったようで、
どうにも動きませんでした。
===
Sub graph_check()
' グラフが1つの場合だけ処理する
If ActiveSheet.ChartObjects.Count = 1 Then
With ActiveSheet.ChartObjects(1).chart
' グラフタイトルの有無の判定
If .HasTitle = True Then
Range("グラフタイトルの有無の判定を表示するセル番地").Value = "OK"
Else
Range("グラフタイトルの有無の判定を表示するセル番地").Value = "NG"
End If
' グラフタイトルの判定
If Range("グラフタイトルの有無を判定を表示するセル番地").Value = "NG" Then
Range("グラフタイトルの文字の一致の判定を表示するセル番地").Value = "NG"
Else
If .ChartTitle.Text = "指定のグラフタイトル" Then
Range("グラフタイトルの文字の一致の判定を表示するセル番地").Value = "OK"
Else
Range("グラフタイトルの文字の一致の判定を表示するセル番地").Value = "NG"
End If
End If
' グラフの種類の判定
If .ChartType = xlColumnStacked Then
Range("グラフの種類の一致を判定表示するセル番地").Value = "OK"
Else
Range("グラフの種類の一致を判定表示するセル番地").Value = "NG"
End If
Dim objChart As chart
Set objChart = ActiveSheet.ChartObjects(1).chart
With objChart.SeriesCollection
For i = 1 To .Count
MsgBox "系列" & i & "のソースデータ範囲は ⇒" _
& vbCrLf & .Item(i).Formula
↑この部分の=SERIES…をセルに書き出したいのですが、
私の力ではどうにもできませんでした
Next i
End With
End Sub
===
(セル番地は文字列に置き換えています)
今回の積み上げ縦棒グラフ以外でも元データの範囲が知りたいので、
複数の系列があれば、その数だけ書き出したいと思っています。
しかし自分の持っている知識ではどうにもできず、時間ばかりが経って
しまいました。
詳しい方のお知恵を拝借し、初心者にわかるようご教授いただけない
でしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
> =SERIESから始まる式をmsgBoxには表示できるのですが、msgBoxではなく
> 結果をセルに書き出すにはどうすればよいのでしょうか。
以下で如何でしょう?
セルA20から下方向へ書き出す様にしています。
.Item(i).Formulaで取得した文字列のままだと上手くいかない様なので、左端の"="を削除しています。
-----------------
Dim i As Long
Dim s As String
Dim rng As Range: Set rng = ActiveSheet.Range("A20")
Dim objChart As Chart
Set objChart = ActiveSheet.ChartObjects(1).Chart
With objChart.SeriesCollection
For i = 1 To .Count
MsgBox "系列" & i & "のソースデータ範囲は ⇒" _
& vbCrLf & .Item(i).Formula
s = .Item(i).Formula
s = Right(s, Len(s) - 1) ' 左端の=を削除
rng.Value = s
Set rng = rng.Offset(1, 0)
Next i
End With
Set objChart = Nothing
ありがとうございます! 感謝します。ちゃんと思っていたことができました。
これが実現できず二晩悩んでいましたので、大変助かりました。
お知恵をお貸しいただき、ありがとうございました。
足りなかったところはもう少し勉強していきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA 税率を判定表する方法を教えて下さい。 10 2022/03/28 11:21
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
Excelで住所を2つ(町名迄と番...
-
Excelでのコメント表示位置
-
複数のセルのいずれかに数字が...
-
Excelのチェックボックスの使い...
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
枠に収まらない文字を非表示に...
-
Excel:指定セル以下全てのセル...
-
エクセルのセルの枠を超えて文...
-
セルに特定の色が付いていたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報