• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA  前回のの続きです。)

VBAでBMI指数を計算して表示させるプログラムの問題

このQ&Aのポイント
  • メッセージボックスに表示されない問題と、改行の仕方を知りたい。
  • プログラムの間違いも教えてほしい。
  • 質問者は指数と体型を表示したい。

質問者が選んだベストアンサー

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

最初の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)
回答No.4

私も訂正 MsgBox ("指数は「x」" & vbCrLf & "yさんはzです。") まだ、変数が""の内側にありますmt2008さんの記述が正解ですのでそちらを参照してください。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ごめんなさい訂正です。 > それでしたらまず、計算式が違います。今の式では体重/身長 の、2乗を求めています。 これは私の勘違い。元の式でもちゃんとBMI指数が計算されます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

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