
こんにちは。
Excel2013で、複数のシートがある中で、その内のいくつかをダイレクトに指定して、内容が同じ処理を行いたいと思っています。
下記のコードで一応処理はできますが、同じ内容がかなりダブってしまうので、何とかまとめたいと考えています。
どのようにすれば、まとめることができるのでしょうか?
下のコードは、"Sheet1"と"Sheet3"にあるグラフのタイトルに”TEST”と入力するものです。
また、もし"Sheet1"と"Sheet3"に別のタイトルをつける場合も、共通の所はまとめることができるでしょうか?
Dim chartobj As ChartObject
Set chartobj = ActiveWorkbook.Sheets("Sheet1").ChartObjects(1)
With chartobj .Chart
.HasTitle = True
.ChartTitle.Text = "TEST"
End With
Set chartobj = ActiveWorkbook.Sheets("Sheet3").ChartObjects(1)
With chartobj .Chart
.HasTitle = True
.ChartTitle.Text = "TEST"
End With
宜しくお願いします。

No.2ベストアンサー
- 回答日時:
1例ですが、1つのプロシージャ(今回はSetTitleとしました)を作成し、それを呼び出す方法があります。
第1パラメータに、シート名
第2パラメータに、タイトル
を指定します。
'本体側
Public Sub test()
Call SetTitle("Sheet1", "TEST1")
Call SetTitle("Sheet3", "TEST3")
End Sub
'作成したプロシージャ側
Private Sub SetTitle(ByVal sheet_name As String, ByVal title As String)
Dim chartobj As ChartObject
Set chartobj = ActiveWorkbook.Sheets(sheet_name).ChartObjects(1)
With chartobj.Chart
.HasTitle = True
.ChartTitle.Text = title
End With
End Sub
試してみました。
動作には、問題ありません。
少しは、すっきり分かりやすくなったように思います。
どうもありがとうございました。
No.3
- 回答日時:
ご質問者の狙いである以下の2点を考慮してVBAを作成してみました。
1.シートをダイレクトに指定する
2.シートごとのグラフに異なるタイトルをつける可能性がある
シート番号をInputBoxで入力させてシートをダイレクトに指定するとともに、そのシートのグラフのタイトル名も入力で指定する方法をとっています。
ただし、以下の点は手抜きです。
1.シート番号は数字ですが、「文字型」変数を宣言してInputBoxで入力させている。
2.数字以外のものが入力された場合、総シート数を超えた数値を入力した場合のエラーチェックがない。
3.入力完了の判別はシート番号を入力しなかったことをもって判別している。
4.入力後の入力者による正誤判定および入力ミスの訂正方法が用意されていない。
Public Sub main()
Dim i As Integer
Dim sheet_name As String
Dim sheet_number As String
Dim chart_title As String
Do
sheet_number = InputBox("シート番号を入力")
If sheet_number = "" Then Exit Do
retry:
chart_title = InputBox("Sheet" & sheet_number & "のチャートのタイトルを入力")
If chart_title = "" Then GoTo retry
sheet_name = "sheet" & sheet_number
Call Set_Chart_title(sheet_name, chart_title)
Loop
End Sub
Private Sub Set_Chart_title(ByVal sheet_name As String, ByVal chart_title As String)
Dim chartobj As ChartObject
Set chartobj = ActiveWorkbook.Sheets(sheet_name).ChartObjects(1)
With chartobj.Chart
.HasTitle = True
.Charttitle.Text = chart_title
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
マクロを複数シートに実行するには?
Excel(エクセル)
-
マクロを特定の複数シートで実行する方法
Excel(エクセル)
-
-
4
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
5
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
6
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
7
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
8
【エクセルマクロ】複数シートで同じマクロを実行
Excel(エクセル)
-
9
Excel マクロを各シートごとに実行したい
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
12
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
13
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
14
VBAで指定シート以外の選択
Visual Basic(VBA)
-
15
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
16
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
17
VBAでワークシートを変数にするとき
その他(Microsoft Office)
-
18
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
19
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
20
数式による空白を無視して最終行までコピーするマクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 複数のシートからグラフ...
-
VBAを利用しオートフィルタで日...
-
エクセルのワークシートが重く...
-
エクセルで入力→日付を自動判別...
-
エクセル マクロを使って日々...
-
VBA セルの値と同じ名前のシー...
-
エクセルについて質問です 日付...
-
エクセルVBAで
-
Excelの中央値の複数条件について
-
エクセルで入力シートから別シ...
-
VBAのoffsetの動き方について教...
-
エクセル 毎日更新する表のデ...
-
【Excel】VLOOKUP関数で複数の...
-
IF, ISNUMBER, INDIRECTの組み...
-
EXCEL VBA 作業用シートの使い回し
-
エクセル自動の年月
-
エクセルにて台帳を作成するに...
-
Excel VBAでのデータ管理方法に...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのワークシートが重く...
-
エクセルで入力シートから別シ...
-
Excelの中央値の複数条件について
-
VBA セルの値と同じ名前のシー...
-
エクセル マクロを使って日々...
-
ExcelVBAで、指定したシートに...
-
EXCEL VBA 一致しないデータの...
-
エクセルにて別シートの値を参...
-
エクセルで入力→日付を自動判別...
-
Excel ハイパーリンク先のセル...
-
Excel 複数のシートからグラフ...
-
該当するデータを書式設定ごと...
-
エクセルのチェックについて
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルVBA:表の内容を担当者...
-
ピボットテーブルから抽出デー...
-
ピボットテーブルの書式設定に...
-
【Excel】VLOOKUP関数で複数の...
-
エクセルでリストにないデータ...
-
エクセルについて質問です 日付...
おすすめ情報
市役所でのパソコン相談では無理だと思われます。