サンプル画像
Excelマクロ塾メニュー

エクセルマクロ・VBAは慣れが肝心
最初は難しく感じるExcelのマクロとVBAですが、仕組みが理解できると徐々に使いこなせるようになってきます!
自分のペースで着実に勉強しましょう!

エクセルマクロ塾
エクセルマクロ塾

Withステートメント

前回のセルの値の取得では、プログラムコードの1行が長く見にくい状態になってしまっています。これを見やすく省略するのがWithステートメントです。

しかしコードを省略するには様々なルールがあるので、それらを理解しながらwithステートメントの使い方を解説していきます。

 

withステートメントの使い方

まずどのような時にwithステートメントを使うのかを紹介します。

ActiveSheet.Range("A1").Value = ActiveSheet.Range("B2").Value
ActiveSheet.Range("C3").Value = 1

 

このコードを見ると、「ActiveSheet」が何度も繰り返され長くなってしまっています。

これをひとまとめにできたら短くなりコードもすっきりしそうですね。

withステートメントを使えばきれいに省略することが可能です。

 

< 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つの使って実際に行を分割してみましょう。

 

excel macro

Valueのあとに半角スペースと「 _」(アンダーバー)を続けて入力し、改行します。

= Rangeから始まる2行目もVBAでは1行のコードとして認識されます。

 

今回のWithステートメントでは、改行と省略を使うことによってどれだけコードを纏めて見やすくすることができるか。ということについて説明しました。

 

次回はセル同士の計算について説明していきます。

 

 

VBA