【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
そして、下記ブックのように
罫線をつけたり、背景色をつけたり、フォントの変更をしたいと思います。
図2 ブックサンプル2
どうやって行いますか。
一つのやり方をあげると下記のプログラムのように行います。
Range("A3:B9").Font.Bold = True
Range("A3:B9").Font.Color = RGB(255, 0, 0)
Range("A3:B9").Interior.Color = RGB(255, 255, 0)
Range("A3:B9").Borders.LineStyle = xlContinuous
セル(A3)~セル(B9)のフォントを太文字にする。
セル(A3)~セル(B9)のフォントのカラーを赤色にする。
セル(A3)~セル(B9)の背景色をカラーを黄色にする。
セル(A3)~セル(B9)に罫線を追加する。
などといった動作です。
「セル(A3)~セル(B9)」で・・・と何回も同じ範囲を記載して、うっとうしいですよね。
そのためにセル(A3)~セル(B9)を変数に格納して作業するオブジェクト型の変数というものがあるのでそれを説明します。
オブジェクト型の変数にするとシートのセル範囲(例えば、A3~B9)を変数のように行うことができます。
サンプルであげたセルの範囲だった場合、毎回セル(A3)~セル(B9)と記載する必要がなくなります。
オブジェクト型の変数は下記のように宣言をしていきます。
そして、宣言後にオブジェクト型の変数に格納をしていきます。
Rangeのオブジェクト型の変数は「As Range」
または、すべてのオブジェクト型を表すオブジェクト型「As Object」で宣言する必要があります。
そして、変数であるので宣言名(名前)も決める必要があります。
記載例
Dim 宣言名 As Range
または
Dim 宣言名 As Object
どちらでも可能です。
ふつうのセルや変数のように”=”を使って右の値を左の値に代入を行うのですが、
オブジェクト型の変数にセルの範囲を格納するには、もう一つ行うことがあります。
それは、Setを使うことです。
記載例
Set オブジェクト型の変数の宣言名 = Range(セル範囲)
記載方法はいままでと同じように
記載していたものが、宣言したオブジェクト型の変数に変わるだけです。
記載例
Range(
セル範囲).Font.Bold = True
↓
オブジェクト型変数の宣言名.Font.Bold = True
になるだけです。
使用するのは、図1のブックサンプル1と同じです。
図3 ブックサンプル1
このブックの値が記載されているセル(A3)~セル(B9)に対して下記の作業を行います。
・太文字にする。
・フォントのカラーを赤色にする。
・背景色をカラーを黄色にする。
・罫線を追加する。
サンプルプログラム
Sub test01()
Dim SR As Object
Set SR = Range("A3:B9")
SR.Font.Bold = True
SR.Font.Color = RGB(255, 0, 0)
SR.Interior.Color = RGB(255, 255, 0)
SR.Borders.LineStyle = xlContinuous
End Sub
オブジェクト型の変数名を”SR”という名前で宣言しています。
オブジェクト型の変数名の”SR”にセルの範囲("A3:B9")を格納しています。
この記載方法により、いままでRange(””)・・・と続けて記載する必要がなくなりました。
すっきりしましたよね。
本当は、Withステートメントと合わせて記載すると
さらにすっきりとした記載方法になるのですが、その記載方法は別の機会に説明します。
上記、サンプルプログラムの実行結果ですが、図2のブックサンプル2と同様の結果となりました。
図4 ブックサンプル1(実行結果)
・太文字になっています。
・フォントのカラーが赤色になっています。
・背景色をカラーが黄色になっています。
・罫線が追加されています。
「Set」ステートメントを使用して、文字の変更等を処理を行うことがきました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート