BMIをSelect Caseで計算

マクロ講座82回BMIの6通りの条件分岐を、Select Caseステートメントを使っても作成する
BMIの6通りの条件分岐を、Select Caseステートメントを使って作成する

BMIをSelect Caseで計算 Excel2013 マクロ講座 82回

BMIを算出する Select Caseで

前回は、BMIの6通りの条件分岐をIf~Then~ElseIfを使って処理しました。 このような多岐選択処理は、Select Caseステートメントを使っても作成することができます。
Select Caseを直訳すると、"場合を選ぶ"です。If~Thenは、"もし~だったら"、どちらも覚えやすいですね。

(サンプルファイルは、こちらから マクロ82回サンプルデータ

Select Case文の書式

Select Case文の書式は以下の用になります。If~Thenと比べると若干見やすく感じますね。
前回と同様の表です。すでに身長と体重を計測した表とBMIの判定基準が表示された表をもとにBMIと判定を入力していきます。
BMIを計算Select Case
BMIによる判定は6通りありますから、Select Caseを使ったコードは以下のようになります。BMI、判定は変数として宣言しています。
      BMI = 体重 / (身長 / 100) ^ 2
      Select Case BMI
          Case Is < 18.5
          判定 = "低体重"
          Case Is < 25
          判定 = "標準"
          Case Is < 30
          判定 = "肥満1度"
          Case Is < 35
          判定 = "肥満2度"
          Case Is < 35
          判定 = "肥満3度"
          Case Else
          判定 = "肥満4度"
      End Select

繰り返し処理をするFor~Nextステートメント

上記のコードをFor~Nextで挟んで、1行ごとに判定していくようなコードを書いてやります。
身長と体重が記入された表でBMIを算出し肥満度を判定するコードは以下のようになります。
Sub BMI値をSelectCaseで()
  Dim mysheet As Worksheet, 身長 As Single, 体重 As Double
  Dim BMI As Double, 判定 As String, i As Integer
  Set mysheet = ThisWorkbook.Worksheets("例3")
  With mysheet
    For i = 2 To 27
      身長 = .Cells(i, 1)
      体重 = .Cells(i, 2)
      BMI = 体重 / (身長 / 100) ^ 2
        '上記で解説済みのコードを省略しています。
        'ここに上記のSelect Caseを使ったコードが入ります。
      .Cells(i, 3) = BMI
      .Cells(i, 4) = 判定
    Next i
  End With
End Sub
作成したマクロコードを実行すると、BMIが計算され、判定が表示されます。
BMIをSelect Caseで計算マクロ2

判定別に背景の色を変える

Select Caseを使った処理のコードは見やすいので、BMI値による判定に見やすくなるように背景色を設定してみました。
BMIをSelect Caseで計算マクロ3
コードは次のようになります。
Sub BMI値で背景を変更()
  Dim mysheet As Worksheet, 身長 As Single, 体重 As Double
  Dim BMI As Double, 判定 As String, i As Integer, mycol As Integer
  Set mysheet = ThisWorkbook.Worksheets("例2")
  With mysheet
    For i = 2 To 27
      身長 = .Cells(i, 1)
      体重 = .Cells(i, 2)
      BMI = 体重 / (身長 / 100) ^ 2
      Select Case BMI
      Case Is < 18.5
      判定 = "低体重"
      mycol = 0
      Case Is < 25
      判定 = "標準"
      mycol = 0
      Case Is < 30
      判定 = "肥満1度"
      mycol = 36
      Case Is < 35
      判定 = "肥満2度"
      Case Is < 40
      判定 = "肥満3度"
      mycol = 38
      Case Else
      判定 = "肥満4度"
      mycol = 3
      End Select
      .Cells(i, 3) = BMI
      .Cells(i, 4) = 判定
      .Cells(i, 4).Interior.ColorIndex = mycol
    Next i
  End With
End Sub
お疲れ様でした。