[[20240822020228]] 『sheetの追加、リネーム、指定について』(いるむ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『sheetの追加、リネーム、指定について』(いるむ)

マクロを使用したシートの追加+αについて教えてください。

A.Sheet(1)の次(2枚目)にシートを追加する

B.追加したシートの名前をsheet1の名前 + 〇〇に変更する

C.Bでリネームしたsheetをマクロ上で分かりやすく指定する

Bについて
Sheets(1).Activate
Worksheets.Add After:=ActiveSheet

    ActiveSheet.Name = "〇〇"

この指定する名前の書き方はどう書けばいいのでしょうか。

Cについて
マクロで2枚目に作成しているため
Sheets(2).Activate
で指定できるのですが、
『作業sheet.Activate』のようなぱっと見でわかる一時的な名前を付ける方法を教えてください。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 Dim 作業sheet As Worksheet
 Set 作業sheet = Worksheets.Add(After:=Worksheets(1))
 作業sheet.Name = Worksheets(1).Name & "〇〇"
(はてな) 2024/08/22(木) 06:18:52

 これはどのような作業の用途に使用するのでしょうか?
 使用する目的を、差し支えない範囲で教えてください。

(あみな) 2024/08/22(木) 11:09:57


はてなさん
ありがとうございます!!
解決しました!!!

あみなさん
コメントありがとうございます。
使用目的ですか。。。?

A,B
複数のsheetがあるExcelファイルで、
一番左にあるsheetに対して処理を行った後のsheetを作成したい
→シートを作成してリネーム、『このsheetをもとにしている!』と分かるように

(例)
202401 / 202402 / 202403。。。
といった月毎のsheetがある
これを202401 / 202401〇〇 / 202402 / 202402〇〇。。。
という並びにしたい
実際には一つずつマクロを実行するので並びは変わりますが、
202401 / 202401〇〇 / 202401改良 / 202401改良〇〇
という風に〇〇同士で比較もしたい

C
マクロを組んでいる最中に、Sheet(1)や(2)でも作業は可能ですが
ぱっと見で分かるように?
『今からこのsheetを触る!』と分かりやすくしたいがリネームしているので指定の方法がわからない

という目的でしょうか。。。?

求められているものとかけ離れた回答であればすみません。
(いるむ) 2024/08/22(木) 20:45:33


 いるむさん返信ありがとうございます。

 >202401 / 202401〇〇 / 202401改良 / 202401改良〇〇
 >という風に〇〇同士で比較もしたい

 なるほど、比較などもするとですね。

 私は、月次報告書のようなイメージなのかなと思いまして
 毎月、右端にリネームして次月用に追加するみたいに考え
 てしまいました。それでお聞きした次第です。^^;
 作業1 , 作業2, 作業3....

 大丈夫です。ありがとうございました。
(あみな) 2024/08/22(木) 22:48:17

話はおわってるようですが何点か。

■1
VBAの世界では基本的にシートやセル(オブジェクトといいます)は、きちんと指定すれば、いちいちアクティブにしたり選択したりする必要はありません。
なので「ぱっと見で分かるように?」というのがどういうイメージかわかりませんが、アクティブシートに依存するコードにしてしまうと、かえって望まないことになるように思います、

■2
上記に反しますし、推奨するわけではありませんが、通常であればシートを追加した場合は、そのシートがアクティブになっています。
なので、それを理解しているならば、アクティブシートが目的のシートであるという特定の仕方(記述)は可能です。

■3
聞きたかったことはおそらく↓のようなことではないでしょうか?

    Sub 実験()
        Dim MySH As Worksheet

        Set MySH = Worksheets.Add(after:=Worksheets("202402"))
        MySH.Name = MySH.Previous.Name & "〇〇" 'Previous=前のシート、Next=後のシート

        Set MySH = Worksheets.Add(after:=Worksheets("202403"))
        MySH.Name = Worksheets(MySH.Index - 1).Name & "〇〇" 'インデックス番号で指定する
    End Sub

要は、Previous(Next)プロパティやインデックス番号を使えば、お望みのことが実現できるとおもいます。

(もこな2) 2024/08/23(金) 10:17:59


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.