【マクロVBA】1行の長いソースコードを改行・複数の行に分ける!アンダーバーの活用法について

ソースコード

プログラムの作成を進めていく中でプログラムが長くなってしまうことはないでしょうか。
プログラムが長くなれば入力や確認で手間が増えてしまいます。

そこで今回はプログラムを改行・次の行にわけることで
コンパクトに管理しやすいプログラムを作成する方法について紹介したいと思います

それでは見ていきましょう。




■見本のプログラムを紹介

まず、内容を紹介するにあたりイメージしやすいように
見本の作業とプログラムを用意しました。下図をご覧ください。

内容としてB4からC15の範囲をコピーして
E4を先頭に貼り付けを行います。

さらにその中の条件として


①値のみ貼り付け
②貼り付けによる計算は行わない
③列と行を入れ替える


の条件を元に貼り付けを行いたいと思います。

■プログラムを改行・次の行に分ける

こちらを満たすプログラムを作成してみました。

Sub データのコピーペースト()

Range(“B4:C15”).Copy
Range(“E4”).PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, Transpose:=True

End Sub

貼り付けの条件が多い為プログラムは長くなってしまい、
モニターを分割して表示していると1部隠れてしまいます

これではプログラムの入力もしにくく、確認作業(デバッグ)時も手間がかかってしまいます。

では悪い例でEnterキーで改行してみましょう。
結果はこのようになります。

式が成り立たずに「コンパイルエラー」が発生してしまいました。
さらにプログラムも赤文字になり、エラー個所であることがわかります。

ここで本題の対策です。
使用するのは「 _(スペース&アンダーバー)」です。

使用方法は改行したい位置で「” _”」を入力します。
では見本のプログラムに組み込んでみましょう。

Sub データのコピーペースト()

Range(“B4:C15”).Copy
Range(“E4”).PasteSpecial xlPasteValues _
, xlPasteSpecialOperationNone _
, Transpose:=True

End Sub

長いプログラムを複数行にすることができました。

実際に打ち込んでもエラーになりませんね。
もちろん、この状態で実行することができます。

注意点として「’(アポストロフィー)」を用いてコメントを入力できるのは
最終行のみです。途中で入力してもエラーになってしまいます。

■よくあるエラーと対処法について

ここからは本内容で発生しやすいエラーと対処法について紹介します。

・コンパイルエラー 修正候補:行番号または行ラベルまたはステートメントまたはステートメントの最後

こちらのエラーは「_(アンダーバー)」の前に「 (スペース)」がないことが考えられます。
下図をご覧ください。

正常なプログラムは「 (スペース&アンダーバー)」がセットで入力されていますが エラーが発生するプログラムは「(アンダーバー)」のみとなっています。

こちらの異常が発生した際は「 _(スペース&アンダーバー)」のセットをご確認下さい

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Excel Visual Basic for Applications (VBA) リファレンス | Microsoft Learn

■まとめ

いかがだったでしょうか。
今回の見本はあまり長くありませんでしたが
使用する機能によっては、とても長くなるので今回の内容を参考にしてみてください。

Ifで条件分岐する際にAndを用いて複数使用する場合は長くなるので活用できますね。
次回は本内容の対称となる「プログラムを1行にまとめる方法」について紹介したいと思います。

次回の記事はこちらから☟

【マクロVBA知識 26】複数行のプログラムを1行・小数行にまとめて短縮する方法 ► 独学エクセル塾 (dokugakuexcel.com)

それでは次回の記事でお会いしましょう。

コメント