
BMIをSelect Caseで計算 Excel2013 マクロ講座 82回
前回は、BMIの6通りの条件分岐をIf~Then~ElseIfを使って処理しました。
このような多岐選択処理は、Select Caseステートメントを使っても作成することができます。
Select Caseを直訳すると、"場合を選ぶ"です。If~Thenは、"もし~だったら"、どちらも覚えやすいですね。
(サンプルファイルは、こちらから マクロ82回サンプルデータ)

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
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


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