【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
皆さんこんにちは、エンジニアのIMMRです。
ここでは「変数」と「定数」について説明します。
「変数」とは
プログラム中に使用するための値を格納しておくものです。
変数に格納されている値はプログラム中に呼び出すことが可能です。
「定数」も
プログラム中に使用するための値を格納しておくもので
定数に格納されている値はプログラム中に呼び出すことが可能です。
ではなにが違うかというと
「変数」はプログラム中に値の変更が可能だが、
「定数」はプログラム中に値の変更が出来ないことです。
図1 説明図
図1のように「変数」なら一度、111を格納した後でも333のように値を何回でも再入力することができますが
「定数」の場合は一度入力してしまうと2回目以降の入力が出来なくなってしまいます。
何度も数値等を入れ替えて使用するものなら「変数」
1度、数値等を入れてそのまま使用するものなら「定数」がよいのです。
変数の宣言方法は、Dim ステートメントで宣言します。
そしてAsの後ろに
Integer:整数型
Long:長整数型
Single:単精度浮動小数点数型
Double:倍精度浮動小数点数型
String: 文字列型
といった型を宣言します。
宣言方法(変数)
Dim AAA As String
Dim BBB As Double
変数名「AAA」で型は文字列型で宣言しています。
変数名「BBB」で倍精度浮動小数点型で宣言しています。
これにより、
AAA=”あああ”
AAA=”いいい”
や
BBB=123
BBB=246.9
等の値を格納することが出来ます。
しかし、
倍精度浮動小数点型でしました「BBB」に文字である ”ううう” を格納するとエラーになります。
定数の宣言方法は、Constステートメントを使います。
そしてAsの後ろに型を宣言します。ここは変数と同じです。
しかし、値を格納するところが違います。
変数の場合は、変数を宣言して、それから値を格納するのですが、
定数は宣言の時に値も決めてしまうのです。
宣言方法(変数)
Const CCC As Double = 987.6
定数名「CCC」で宣言しています。
そして、値(987.6)も宣言時に格納を行います。
定数の場合、宣言時に値を格納しないと・・・
変数のように名前の宣言だけして、値は後で入力しようとすると
下記のようなエラーが表示されます。
図2 定数のエラー
そのため、値の格納が必要になります。
そして、一度宣言した値の変更はできません。
一度、定数を宣言(値を含めて)から
変数のように値を格納しようとすると今度は、下記のようなエラーが発生します。
Const CCC As Double = 987.6と宣言した後に
CCC= 246.8 と値を格納をしようとすると
図3 定数のエラー2
ではサンプルプログラムを見ていきましょう。
使用するのは下記、ブックを使用します。
図4 サンプルブック
C列に記載してある金額(税抜き)から税(10%)を含んだ金額を計算して、計算結果を隣のD列に算出します。
下記がサンプルプログラムです。
サンプルプログラム1
Sub test1()
Dim i As Long
Dim price As Double
Const tax As Double = 1.1
For i = 3 To 6
price = Cells(i, 3)
Cells(i, 4) = price * tax
Next
For i = 10 To 12
price = Cells(i, 3)
Cells(i, 4) = price * tax
Next
For i = 16 To 18
price = Cells(i, 3)
Cells(i, 4) = price * tax
Next
End Sub
「変数」priceは、毎回セルに記載してある値を格納していますが、
「定数」taxは、一度1.1を入力した後は変更してないです。
また、下記のようなプログラムでも同じ動作をしますが、
サンプルプログラム2
Sub test2()
Dim i As Long
Dim price As Double
For i = 3 To 6
price = Cells(i, 3)
Cells(i, 4) = price * 1.1
Next
For i = 10 To 12
price = Cells(i, 3)
Cells(i, 4) = price * 1.1
Next
For i = 16 To 18
price = Cells(i, 3)
Cells(i, 4) = price * 1.1
Next
End Sub
もし、税が変化した場合、 ※上がってほしくないが・・・
サンプルプログラム2では、 1.1の箇所を直す必要があります。 ※ここでは3箇所
しかし、サンプルプログラム1では定数宣言箇所のConst tax As Double = 1.1
の1っ箇所だけで済むので修正も安易に行うことができます。
上記プログラムを実行した結果です。
図5 実行結果
正しく、価格(税込み)の値が記載されています。
「変数」「定数」を使用して、正しく出力を行うことができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート