Withステートメント
前回のセルの値の取得では、プログラムコードの1行が長く見にくい状態になってしまっています。これを見やすく省略するのがWithステートメントです。
しかしコードを省略するには様々なルールがあるので、それらを理解しながらwithステートメントの使い方を解説していきます。
withステートメントの使い方
まずどのような時にwithステートメントを使うのかを紹介します。
ActiveSheet.Range("A1").Value = ActiveSheet.Range("B2").Value
ActiveSheet.Range("C3").Value = 1
このコードを見ると、「ActiveSheet」が何度も繰り返され長くなってしまっています。
これをひとまとめにできたら短くなりコードもすっきりしそうですね。
withステートメントを使えばきれいに省略することが可能です。
< Withステートメントを使って省略 >
このような形に省略されます。
省略するときにはいくつかの条件があるので、withステートメントを使うときは以下のスタイルを崩さないように気をつけてください。
①「With」と「End With」の間が省略して入力できる範囲。
今回は「ActiveSheet」 が省略される対象なので、ActiveSheetが頭に付いていた3つが間に入る形になります。
②省略して入力する文字は「.」からはじめること。
省略して入力する文字には必ずドットを入力してから始めなければなりません。
< Withステートメントを使って省略 > の図を見てください。
Rangeの始めにはどれもドットが入力されています。
これを入れ忘れてしまうとエラーの発生する原因となります。
③「End with」より下では「ActiveSheet」を省略しての入力はできない。
省略できるのは「With」と「End With」の間のみです。
それ以外では省略することはできないので注意が必要です。
VBA 行の分割
プログラムコードは基本的に1行で書いてありますが、複数を指定したりする場合には1行が長くなり収まりきらないなんてことも・・・。そんなときに書いている途中でエンターを押して改行を行ってしまっては、VBAで正常に処理されない場合があります。
そんなときどうすればよいのか・・・。
VBAではコードに条件をつけてあげることによって、1つのコードを2行以上に分けて書いても読み取らせることができます。
しかし分割するときにもいくつかの条件があるので、図を使いながら行の分割方法と注意点について説明していきます。
Range("A1").Value=Range("B3").Value*Range("C5").Value
このコードを分割し2行にします。
まずはじめに分割する位置を見つける必要があります。
上のコードでは = の部分から分割します。
これはなぜなのかというと、VBAのコードは分割するとき「.」「=」「,」の部分からであるという条件があるからなのです。プロパティなどの命令語の途中からでは分割することはできません。
もうひとつ行の分割を行うときには半角スペースと「 _」(アンダーバー)の組み合わせを使うことが必要です。
この2つの使って実際に行を分割してみましょう。
Valueのあとに半角スペースと「 _」(アンダーバー)を続けて入力し、改行します。
= Rangeから始まる2行目もVBAでは1行のコードとして認識されます。
今回のWithステートメントでは、改行と省略を使うことによってどれだけコードを纏めて見やすくすることができるか。ということについて説明しました。
次回はセル同士の計算について説明していきます。
