こんにちは。
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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
マクロを複数シートに実行するには?
Excel(エクセル)
-
-
4
マクロを特定の複数シートで実行する方法
Excel(エクセル)
-
5
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
6
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
7
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
8
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
9
Excel VBA 同じ処理を複数回行うとき、コードをできるだけ短くするには?
Visual Basic(VBA)
-
10
複数のシートの同じセルに入力するvbaを教えてください
Excel(エクセル)
-
11
エクセルのフィルターを複数シートに連動させたいです。 エクセルファイルに15シートあります。 そのう
Excel(エクセル)
-
12
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
13
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
14
Excel VBAである特定文字列を含むシート名例えば「りんご(1)」
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
【ExcelVBA】全シートのセルの数式を値に変換する事は可能でしょうか?
Visual Basic(VBA)
-
17
Excel マクロを各シートごとに実行したい
Excel(エクセル)
-
18
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
19
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
20
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
エクセル自動の年月
-
エクセルVBA:表の内容を担当者...
-
VBA セルの値と同じ名前のシー...
-
ExcelVBAで、指定したシートに...
-
VBAでシート名をセルから取得し...
-
Excel日付変更との参照先の連動
-
EXCEL VBA 一致しないデータの...
-
エクセルVBAで
-
該当するデータを書式設定ごと...
-
Excelの中央値の複数条件について
-
EXCEL VBA 作業用シートの使い回し
-
エクセル マクロを使って日々...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル シフト勤務表から、...
-
エクセル1のワークシートで1ペ...
-
Excel 複数のシートからグラフ...
-
EXCELの日付データをWORD文書に...
-
エクセルにて別シートの値を参...
-
テキストボックス内の文字のふ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
ExcelVBAで、指定したシートに...
-
エクセルのワークシートが重く...
-
IF, ISNUMBER, INDIRECTの組み...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
エクセル シフト勤務表から、...
-
Excel 複数のシートからグラフ...
-
VBAでシート名をセルから取得し...
-
Excelの中央値の複数条件について
-
エクセルについて質問です 日付...
-
エクセルで入力→日付を自動判別...
-
VBAのoffsetの動き方について教...
-
エクセル自動の年月
-
エクセルVBA:表の内容を担当者...
-
エクセル 毎日更新する表のデ...
-
エクセル マクロを使って日々...
-
質問:特定文字列から空白行ま...
-
EXCEL VBA 一致しないデータの...
-
エクセルにて別シートの値を参...
おすすめ情報
市役所でのパソコン相談では無理だと思われます。