「word vba selection.insertbreak 書式」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Word VBA(Visual Basic for Applications)から改ページやセクション区切りなどを挿入する、Selection.InsertBreakをどう書けばいいのか探している方による検索です。
Selection.InsertBreakのサンプルマクロ
まずは、SelectionオブジェクトのInsertBreakメソッドのサンプルマクロをご紹介しておきます。
Selection.InsertBreak Type:=wdPageBreak
End Sub上記のマクロを実行すると、カーソルのあった位置に改ページが挿入されます。
Selection.InsertBreakの書式
SelectionオブジェクトのInsertBreakメソッドは、引数・Typeにどんな区切りを挿入するのかを表す、WdBreakType列挙に定義された定数を指定すればOKです。
Selection.InsertBreakメソッドの引数は一つですし、定数を使えば意味は取れますから、名前付き引数を使わないで、
Selection.InsertBreak wdPageBreak
としても問題ないと感じます。
ヘルプには引数・Typeが必須となっているようですが、実は省略することもできて、省略した場合は改ページの挿入になるようですが、可読性が著しく低下しますから、引数を定数で指定するほうがいいでしょう。
ネット上で、
Selection.InsertBreak 7
Selection.InsertBreak Type:=7
といった定数を使わないで引数に数値を指定したコードも転がっているのを見かけるかもしれません。これでも動きはしますが、コードが読みやすくなる定数を使いましょう!
VBA以外の他のプログラミング言語に慣れた方が書いたコードで、
Selection.InsertBreak (wdPageBreak)
といった書き方を見かけることがあるかもしれません。これはこれで動いてしまいますが、VBAの文法的にはカッコは不要です。
関数でもプロパティでもメソッドでも戻りを使うときに引数をカッコで括る、というのがVBAのルールです。
Selection.InsertBreakメソッドはそもそも戻りがありませんから、引数をカッコで括る必要はありません。特に必ずカッコをつけるプログラミング言語に慣れている方は、気持ち悪いと感じると思いますが、今後もVBAを使っていくのならば、VBAの書き方に早く慣れるほうがいいと感じます。
Selection.InsertBreakで引数の定数がメンバー表示されない件
Selection.InsertBreakメソッドの書き方は、上記のとおりですが、Microsoftに文句を言いたい気持ちが抑えられませんので書いておきます。
Selection.InsertBreakメソッドの引数・Typeは、定数を指定するにも関わらず、定数が自動メンバー表示されないように、
作られてしまっている件です。
例えば、同じSelectionオブジェクトのPasteAndFormatメソッドの場合、引数にはWdRecoveryType列挙に定義されている定数を指定するように作られています。
オブジェクトブラウザーの詳細ペインには上図のように「Sub PasteAndFormat(Type As WdRecoveryType)」と表示されています。
ですから「Selection.PasteAndFormat 」とスペースまで入力すれば、下図のように、WdRecoveryType列挙に定義されている定数がメンバー表示されます。
ところが今回のSelection.InsertBreakメソッドの場合は、定数・Typeに定数を指定するにも関わらずそのような作りになっていません。
これが
Sub InsertBreak([Type])
ではなく、
Sub InsertBreak([Type As WdBreakType])
のように作られていれば、コーディング時に自動メンバー表示されるはずですし、オブジェクトブラウザーでも指定できる定数を簡単に調べられるし、そもそもこの記事を書くキッカケとなった検索をした方も悩まなかった可能性が高いはずです。
今回あらためてオブジェクトブラウザーを眺めてみたのですが、Word VBAではこういうケースが結構あるようです。
Selection.GoToメソッドがウッカリそうなってしまっていたのかと思っていましたが、そうではなさそうです。定数が自動メンバー表示される作りになっているものとそうでないものが混在していて、疑問が広がっています。比較的新しく登場したプロパティやメソッドはちゃんと定数が自動メンバー表示される作りになっていて、古くからあるものはそうなっていないことが多いのでしょうか。(この件についてMicrosoft MVP Office Systemのきぬあさ さんが、かなり古いバージョンのWordまで調査してくださっています。2015-03-03)
- Newer:最後のスライドを表示・選択するマクロ
- Older:3/1(日)Excelマクロ入門講座を開催しました(女性3 男性4)
Home » ワードマクロ・Word VBAの使い方 » Selection » Word VBAのSelection.InsertBreakの書式