
こんにちは。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
マクロを複数シートに実行するには?
Excel(エクセル)
-
-
4
マクロを特定の複数シートで実行する方法
Excel(エクセル)
-
5
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
6
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
7
【エクセルマクロ】複数シートで同じマクロを実行
Excel(エクセル)
-
8
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
9
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
10
Excel マクロを各シートごとに実行したい
Excel(エクセル)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
13
VBAで指定シート以外の選択
Visual Basic(VBA)
-
14
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
15
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
16
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
17
VBAでワークシートを変数にするとき
その他(Microsoft Office)
-
18
数式による空白を無視して最終行までコピーするマクロ
Excel(エクセル)
-
19
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
20
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの中央値の複数条件について
-
エクセルのワークシートが重く...
-
Excel2003 ワークシートをリン...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
VBAを利用しオートフィルタで日...
-
【Excel】VLOOKUP関数で複数の...
-
EXCELの日付データをWORD文書に...
-
EXCEL VBA 一致しないデータの...
-
ピボットテーブルから抽出デー...
-
エクセルにて別シートの値を参...
-
Excel ハイパーリンク先のセル...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelの関数について、特定の文...
-
Excelで行ごとコピー、同じ行を...
-
エクセルにおける、グラフの指...
-
日付が1年以内になると他のセル...
-
たくさん作った同じ設定のグラ...
-
エクセル 指定した文字列を含...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのワークシートが重く...
-
ExcelVBAで、指定したシートに...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
IF, ISNUMBER, INDIRECTの組み...
-
Excelの中央値の複数条件について
-
エクセルで入力→日付を自動判別...
-
Excel ハイパーリンク先のセル...
-
エクセルVBA:表の内容を担当者...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル マクロを使って日々...
-
指定した日付の範囲内でデータ...
-
エクセルについて質問です 日付...
-
エクセルにて別シートの値を参...
-
エクセル:複数シートのデータ...
-
EXCEL VBA 一致しないデータの...
-
エクセル 毎日更新する表のデ...
-
エクセル シフト勤務表から、...
-
VBAのoffsetの動き方について教...
-
Excel 複数のシートからグラフ...
おすすめ情報
市役所でのパソコン相談では無理だと思われます。