- ベストアンサー
VBAでBMI指数を計算して表示させるプログラムの問題
- メッセージボックスに表示されない問題と、改行の仕方を知りたい。
- プログラムの間違いも教えてほしい。
- 質問者は指数と体型を表示したい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
最初のBMI指数計算部分は見ていません、xとyが正しく求められているものとして進めます 1)MsgBoxの記述場所ですが、このタイミングではまだzは定まっていません。End Selectのあとに書いてください 2)Select Case文 イ)Case "19To25"、""で囲ったため値では無く文字列で比較しています ロ)Case "18<x"、""を外したとしてもこの書き方はできません、また比較方向が逆だとおもいます。 3)MsgBox ("指数は「x」&vbCrLf&yさんはzです。") & vbCrLf &が""の内側にあります。 Private Sub CommandButton1_Click() y = Val(Cells(1, 2).Value) x = Val(Cells(3, 2).Value) / Val(Cells(2, 2).Value) ^ 2 Cells(2, 5) = x Select Case x Case Is < 18 z = "やせぎみ" Case 19 To 25 z = "普通" Case 26 To 30 z = "太り気味" Case Else z = "危険" EndSelect MsgBox ("指数は「x」" & vbCrLf & "yさんはzです。") End Sub
その他の回答 (3)
- uruz
- ベストアンサー率49% (417/840)
私も訂正 MsgBox ("指数は「x」" & vbCrLf & "yさんはzです。") まだ、変数が""の内側にありますmt2008さんの記述が正解ですのでそちらを参照してください。
- mt2008
- ベストアンサー率52% (885/1701)
ごめんなさい訂正です。 > それでしたらまず、計算式が違います。今の式では体重/身長 の、2乗を求めています。 これは私の勘違い。元の式でもちゃんとBMI指数が計算されます。
- mt2008
- ベストアンサー率52% (885/1701)
BMI指数って体重(kg)を身長(m)の2乗で割るというやつですよね? それでしたらまず、計算式が違います。今の式では体重/身長 の、2乗を求めています。 次に、変数と文字列の違いをしっかり認識しましょう。 それから、変数にメッセージを入れてからMsgBoxで表示します。 また、指数が小数点以下もある値になることが多いと思いますので、Case文は「To」じゃない方が良いと思います。 Private Sub CommandButton1_Click() y = Val(Cells(1, 2).Value) x = Val(Cells(3, 2).Value) /( Val(Cells(2, 2).Value) ^ 2) Cells(2, 5) = x Select Case x Case Is < 18 z = "やせぎみ" Case Is < 25 z = "普通" Case Is < 30 z = "太り気味" Case Else z = "危険" End Select MsgBox ("指数は「" & x & "」" & vbCrLf & y & "さんは" & z & "です。") End Sub