教えて!ExcelVBA!スマートフォン用の表示で見る教えて!ExcelVBA!ExcelVBAの基礎知識・書き方について説明していきます。変数とは「値を一時的に保存していくための入れ物となり、条件により値を変更する事が可能」と理解してもらえればいいと思います。ExcelVBAでプログラミングをしていく上では、変数の使用は必須となります。定義は以下の様になります。[型]=======================================================================[説明]:[変数名]には変数の名前を記述します。名前はローマ字以外にも漢字や記号を使用する事ができます。[型]には変数の型を指定します。型にはいくつかありますが、代表的なものを以下に一覧にしておきます。ちなみに型は省略する事も可能ですが、省略した場合はVariant型が自動的に割り当てられます。DimとPublicとの違いについて予め説明しておくと、Dimはプロジージャ内でのみ有効になる変数定義となり、プロシージャ処理が終了すると変数の値もクリアされます。それに対し、Publicは複数のプロシージャで共通の変数として使用する場合に指定し、対象のExcelファイルが閉じるまでセットされた値はクリアされません。詳細につていは、以下の使い方で説明します。変数の使い方について、具体的に説明していきます。Dimによる変数定義(プロシージャ内でのみ使用できる変数を定義)まず最初にDimによる変数の定義方法について説明します。[記述例]:※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。Sub-----------------------------------------処理の流れは以下の通りとなります。[処理1]:変数の定義をしますDimによる変数の定義となります。変数名は「行」となり、入力できる値は「小数を含む数値のみ」となります。ちなみに、この変数:行に数値以外のデータを入力しようとするとエラーとなり、警告メッセージが表示されます。Dimで指定した変数は、プロシージャ内でのみセットされた値が有効となります。(プロシージャを抜けるとセットされた値はクリアされます)[処理2]:変数に初期値をセットします処理1で指定した変数:行に初期値として0をセットします。セット後のMsgBoxでは、変数:行にセットされている値の「0」が表示されます。[処理3]:処理2で初期値セットした変数に1を足し算しますここでは、「処理2でセットされた変数:行に1を足し算し、変数:行にセットしなおして下さい。」との内容になります。詳しく説明すると、「=」(イコール)の右側に書かれている「行+1」の結果を、左側の「行」にセットし直すとの内容になります。右側で0+1=1の計算を行い、結果の1を左側の変数:行にセットし直します。セット後のMsgBoxでは、変数:行にセットされている値の「1」が表示されます。[処理4]:処理3の足し算した結果に更に1を足し算しますここでは、「処理3でセットされた変数:行に1を足し算し、変数:行にセットしなおして下さい。」との内容となります。上記の処理3と同じで、「=」(イコール)の右側に書かれている「行+1」の結果を、左側の「行」にセットし直すとの内容になります。右側で1+1=2の計算を行い、結果の2を左側の変数:行にセットし直します。セット後のMsgBoxでは、変数:行にセットされている値の「2」が表示されます。[実行例]:[処理2]のMsgBoxでは、「0」が表示されます。[処理3]のMsgBoxでは、「1」が表示されます。[処理4]のMsgBoxでは、「2」が表示されます。Dim定義の使い方についての説明は以上です。Publicによる変数定義(複数のプロシージャで共通的に使用できる変数を定義)次にPublicによる変数の定義方法について説明します。[記述例]:※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。Sub-----------------------------------------処理の流れは以下の通りとなります。[処理1]:変数の定義をしますPublicによる変数の定義となります。変数名は「行」となり、入力できる値は「小数を含む数値のみ」となります。Publicで指定した変数は、複数のプロシージャで共通で使用する事ができます。(ファイルが閉じられるまでセットされた値は有効的に使用する事ができます)[処理2]:変数に初期値をセットします処理1で指定した変数:行に初期値として100をセットします。セット後のMsgBoxでは、変数:行にセットされている値の「100」が表示されます。[処理3]:サンプル1プロシージャを呼び出しますここでは、「サンプル1プロシージャを呼び出して、その中の処理を実行して下さい。処理完了後には再度戻って来て下さい。」との意味になります。特定のプロシージャから他のプロシージャを呼び出す場合は、呼び出すプロシージャ名の前にCall文を記述します。よって、この後はサンプル1プロシージャの処理が実施される事となり、[処理5]の内容が実行されます。[処理4]:サンプル2プロシージャを呼び出しますここでは、「サンプル2プロシージャを呼び出して、その中の処理を実行して下さい。処理完了後には再度戻って来て下さい。」との意味になります。よって、この後はサンプル2プロシージャの処理が実施される事となり、[処理6]の内容が実行されます。[処理5]:処理2で初期値セットした変数から20を引き算します[処理1]で説明した通り、変数をPublic指定しているため、変数:行は[処理2]で初期値セットした「100」が引き続き使用される事となります。よって、ここでは「処理2でセットされた変数:行から20を引き算し、変数:行に再セットして下さい。」との内容になります。「=」(イコール)の右側で100-20=80の計算を行い、結果の80を左側の変数:行に再セットします。セット後のMsgBoxでは、変数:行にセットされている値の「80」が表示されます。[処理6]:処理5の足し算した結果に更に50を引き算します変数:行は[処理5]でセットした「80」が引き続き使用される事となります。よって、ここでは「処理5でセットされた変数:行から50を引き算し、変数:行に再セットして下さい。」との内容となります。「=」(イコール)の右側で80-50=30の計算を行い、結果の30を左側の変数:行に再セットします。セット後のMsgBoxでは、変数:行にセットされている値の「30」が表示されます。[実行例]:[処理2]のMsgBox表示では、「100」が表示されます。[処理5]のMsgBox表示では、「80」が表示されます。[処理6]のMsgBox表示では、「30」が表示されます。Public定義の使い方についての説明は以上です。おわりに変数の型定義は設定するようにして下さい。定義を指定する事で、プログラミングのバグ(誤り)を発見しやすくなります。文字列の変数に数値を入力しようとしたり、日付の変数に文字列を入力しようとした場合、Excel側で警告を出してくれます。これにより、エラーの起きにくい精度の高いプログラムを組む事ができるようになります。Tumblr関連記事2019-11-29【ExcelVBA関数】CStr関数(数値を文字列に変換)とVal関数(文字列を数値に変換)の使い方...CStr関数は、数値を文字列に変換します。Val関数は、文字...2019-11-12【ExcelVBA関数】Mid関数の使い方がわからないです。教えて!Mid関数は、文字列の指定文字から指定文字数分だけを抜き出す場...2019-11-11【ExcelVBA関数】Right関数の使い方がわからないです。教えて!Right関数は、文字列の右端から指定文字数分だけを抜き出す場合...2019-11-10【ExcelVBA関数】Left関数の使い方がわからないです。教えて!Left関数は、文字列の先頭から指定文字数分だけを抜き出す場合...2019-10-18【ExcelVBA構文】Do~Loop文(繰り返し処理)の使い方を知りたいです。はてなブログProExcelVBAの基礎知識・書き方について説明していきます。(9)月別アーカイブプライバシーポリシープライバシーポリシースターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。