【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 ブック53
この資料を見やすくするために罫線の追加や、文字の色などを変えて加工してみたいと思います。
下記、図のように
・文字を赤く
・背景を水色
・文字を赤く
・罫線を追加
していきたいと思います。
図2 ブック53(サンプル)
上記の作業をする場合のサンプルプログラムです。
サンプルプログラム1
Sub test01()
Range("A4:D14").Borders.LineStyle = xlContinuous
Range("A4:D14").Interior.ColorIndex = 20
Range("A4:D14").Font.ColorIndex = 3
Range("A4:D14").Font.Bold = True
End Sub
Range("A4:D14")に罫線を追加する。
Range("A4:D14")の背景を水色にする。
Range("A4:D14")の文字の色を赤にする。
Range("A4:D14")の文字を太文字にする。
といった感じです。
ですが、何度も同じような記載をするのは手間がかかりますよね。
これから説明するWithステートメントを使用することで
省略して記載が出来、プログラム自体も読みやすくすることが出来ます。
VBAの命令文では、対象となるオブジェクト(処理の対象となる範囲)の指定が必要になります。
そのオブジェクトは処理を行うために宣言しないといけないのですが
同じオブジェクトの場合、Withステートメントを記載することで省略することができます。
Withステートメントの後ろに記載するとそれ以降End Withまでは同じステートメントとみなすことが出来ます。
その際にピリオドを付けます。
これにより、ピリオドの前は同じオブジェクトであることを示すことができます。
記載方法は、
With + オブジェクト(範囲) と End With で囲みます。
そして、その中に処理(例えば、文字を赤くする等)を記載する場合、
本来でしたらオブジェクト + 処理 で宣言するのですが
オブジェクト部分を省略して、ピリオドだけにすることが可能です。
記載方法
With オブジェクト(範囲)
.処理①の内容
.処理②の内容
.処理③の内容
.処理④の内容
End With
上記で説明したSub test01()のプログラムをWithステートメントを使って記載すると
下記のようになります。
サンプルプログラム2
Sub test02()
With Range("A4:D14")
.Borders.LineStyle = xlContinuous
.Interior.ColorIndex = 20
.Font.ColorIndex = 3
.Font.Bold = True
End With
End Sub
オブジェクト部分が省略されて、すっきりします。そして、読みやすくなります。
もう一つの記載方法について説明します。
それは、以前に説明した
オブジェクトを「Set」ステートメントで変数に格納する方法 と合わせて作成することです。
作成は下記のようになります。
サンプルプログラム3
Sub test03()
Dim Ra As Range
Set Ra = Range("A4:D14")
With Ra
.Borders.LineStyle = xlContinuous
.Interior.ColorIndex = 20
.Font.ColorIndex = 3
.Font.Bold = True
End With
End Sub
このようにオブジェクト型の変数を用いて記載することも可能です。
上であげたサンプルプログラム2とサンプルプログラム3の処理結果は同じなので、
サンプルプログラム2だけを実行します。
使用するのは、図1 ブック53です。
実行すると下記、図3になります。
図3 ブック53(サンプルプログラム2実行結果)
図2 ブック53(サンプル)と同じ結果を得ることができました。
そのため、Withステートメントを使用して、サンプルプログラム1と同じ動作をすることが出来ました。
同一のオブジェクトを省略して安易に記載することができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート