VBAの基礎知識 Nameプロパティを使用してシート名の取得と設定
Worksheetの名前を取得したり、設定するには、Nameプロパティを使います。この回ではNameプロパティを使用してシート名の取得と設定をしてみましょう.
VBAの基礎知識 007回
Nameプロパティを使用してシート名の取得と設定
ワークシートの名前を取得したり、名前を設定するというマクロは今までもたくさん使っています。
これは Worksheet オブジェクトの Name プロパティを使って設定し得することができます。
(サンプルファイルは、こちらから
サンプルファイルジップ)
Nameプロパティを使用してシート名の取得と設定
指定したシートを指定枚数コピーして任意の名前をつける
1.このマクロでは Inputbox でユーザーから必要なコピー枚数を入力してもらって、その数値を受け取り、枚数分だけシートをコピーします。
次に、 ActiveSheet.Name でその追加したシートに名前をつけています。
Sub 枚数コピーして名前もつける() Dim i As Integer Dim cnt As Integer cnt = Application.InputBox(Prompt:="枚数を入力", Title:="枚数指定", Type:=1) For i = 1 To cnt Worksheets("テンプレート").Copy before:=Worksheets("テンプレート") ActiveSheet.Name = "令和5年" & i & "月" Next i End Sub
2.inputbox を使ってユーザーに必要枚数を指定してもらいます。
cnt = Application.InputBox(Prompt:="枚数を入力", Title:="枚数指定", Type:=1)
3. For文を使って必要枚数文テンプレートをコピーして、コピーしたシート2年プロパティで名前を設定しています。
For i = 1 To cnt Worksheets("テンプレート").Copy before:=Worksheets("テンプレート") ActiveSheet.Name = "令和5年" & i & "月" Next i
同名のワークシートがあるかないかを確認するマクロ
4. 今度は複数のシートがあるブックの中で、指定した名前のシートがあるかどうか探してもしあったらメッセージを表示します。さらにそのシートを選択するというマクロを作ります。
Sub 同じ名前のシートを探す() Dim WsName As String, mysheet As Worksheet WsName = "テンプレート" For Each mysheet In Worksheets If mysheet.Name = WsName Then MsgBox WsName & "と同じ名前のワークシートがあります" Worksheets(WsName).Select Exit Sub End If Next End Sub
5. 実行すると同名のワークシートがある時は同じ名前のワークシートがありますとメッセージを表示します。
6. そして見つかった同盟のワークシートをセレクトします。
このマクロの場合同じ名前のシートがなければそのまま何も起こらず終わってしまいます。
最後にメッセージボックスで同名のシートはなかったと表示してもいいでしょう。
'以下のコードをEnd Subの前に追加する MsgBox WsName & "と同じ名前のワークシートはありませんでした。"
同じ名前のワークシートがあるかどうかはFor Eachステートメントを使ってworksheets collectionのメンバーである worksheet オブジェクトをひとつずつ探しています。
そしてIfステートメントで名前が同じかどうかをチェックすると言うやり方です。