Excel VBAでSelect Caseステートメントの評価対象にTrueを使う方法を解説します。単刀直入にサンプルコードを示した上で、簡単に解説します。
スマホの方はお持ちのスマホを横にして頂くと、サンプルコードが、PCと同様に見れると思います。たぶん。
目次
Select Case Trueの使い方
今回の事例では、下記の様なシートを想定します。いきなりサンプルコード示します。
サンプルコード
うまく行くサンプルと失敗するサンプルを示して、違いを見比べます。
うまくいくサンプルコード
Sub Select_Case_Trueを使う() Select Case True Case IsNumeric(Cells(1, 1)) Cells(1, 2) = "Number" End Select End Sub
何をやっているかというと、A1セルが数値だったらB1セルに「Number」と書き込んでいます。
理解を深めるための失敗するサンプルコード
Sub Select_Case_Trueを使わずに失敗する() Select Case Cells(1, 1) Case IsNumeric(Cells(1, 1).Value) Cells(1, 2) = "Number" End Select End Sub
エラーは出ませんがCase IsNumeric(Cells(1, 1).Value)の中身が実行されません。うまくいかない理由はCells(1,1)が IsNumeric(Cells(1, 1).Value)の値と一致しないから。
Cells(1,1)の値は「123」。IsNumeric(Cells(1, 1).Value)の値は「True」。もちろん一致していませんね。この調子でいけばどのセルの値も「True」ではないので一回もCaseの中身が実行されません。セルの中に「True」と書かれていれば、今度は文字列なので当然IsNumericがFalseなので結局一回も実行されません。
使い方をど忘れしてしまった人の為の解説は以上ですが、自由自在に使えるために簡潔に解説を加えておきます。
自由自在に使いこなせるようになる為のSelect Case Trueの解説
Select Case Trueにすると、Caseの判定が必ず行われます。ということは、細かい判定をしたい場合はとりあえず、Select Case Trueとしておいて、Caseの中で細かく条件分岐すれば良いと言うことです。
今回の図を再掲します。
Sub Select_Case_Trueを使いこなすサンプル() Dim i As Long For i = 1 To 5 Select Case True Case IsNumeric(Cells(i, 1)) Cells(i, 2) = "数値" Case IsNumeric(Cells(i, 1)) = False Cells(i, 2) = "これは数値ではありません" End Select Next i End Sub
実行結果は下記の通り。
上のサンプルコードの「 Case IsNumeric(Cells(i, 1)) = False」の部分は「Case Not IsNumeric(Cells(i, 1))」の方が筋のいい書き方かと思いますが、あえてわかりやすさ重視で「= False」としました。
Select Case TrueのTrueは全てのCaseについて条件が判定されると言う意味です。Case IsNumericのTrueとは関係ありません。
最後の使いこなすサンプルをよく見れば、とりあえずTrueで全てのCaseについて判定をしてCaseの中で細かい条件分岐をできる感覚が分かるのではないでしょうか。
<ゆんの別ブログ:カナダ永住権取得への道 2022/9~>
yun-in-canada.hatenablog.jp
<ゆんの電子書籍>ゆんの電子書籍はすべてkindle unlimitedで読み放題です!