ここから本文です

「z2乗=(x-3)2乗+(y-2)2乗 においてx=セルB6の値、y=セルB7の値の時、zの値が...

アバター

ID非公開さん

2016/10/2403:17:12

「z2乗=(x-3)2乗+(y-2)2乗 においてx=セルB6の値、y=セルB7の値の時、zの値がメッセージボックスに表示されるようにプログラムを作成しなさい」

写真のように入力したのですが、エラーがでてしまいます。どこをどのように直せばいいのでしょうか。

早急に教えていただけると助かります。どうかよろしくお願いします。

2乗,セルB6,セルB7,x-3,y-2,Dim y As Double,Dim x As Double

閲覧数:
76
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

mek********さん

2016/10/2406:37:27

一応

z ^ 2 = (x - 3) ^ 2 + (y - 2) ^ 2

という数式から、

z の値 = zの2乗の平方根
(普通は、正負の二つの値)

を求めるなら、
Sqr関数で、
平方根を倍精度浮動小数点数型 (Double)
で返す必要があるので、
少なくとも、
変数zはDouble型
だと思います。

変数zをDouble型
としている時、

あとあと、
x,y
を、別式で、
求めることが想定されるなら、
(あるいは、倍精度浮動小数点数型で入力するなら)
変数x
変数y
も、Double型としておいてほうがいいかもしれません。
(下記に、x,y,zをDouble型変数にしたコ-ド例)


[入力と結果例]
x = 6
y = 6

z の二乗 = 25
z = ±5
______ イメ-ジ 3:4:5 の直角三角形



x = 4
y = 3

z の二乗 = 2
z = ±1.4142135623731
___ イメ-ジ 1:1:√2 の直角三角形




Option Explicit

Sub Test()
Dim x As Double
Dim y As Double
Dim z As Double

x = Range("B6")
y = Range("B7")
z = Sqr((x - 3) ^ 2 + (y - 2) ^ 2)

MsgBox "zの二乗 = " & (x - 3) ^ 2 + (y - 2) ^ 2 & vbCrLf & _
"z = ± " & z

End Sub

  • mek********さん

    2016/10/2407:37:37

    z の値として、

    x = 3
    y = 2

    z の二乗 = 0
    z = ±0

    のように、
    ±0
    のような事もあり得ます。
    これを避けたいという場合は、

    MsgBox "zの二乗 = " & (x - 3) ^ 2 + (y - 2) ^ 2 & vbCrLf & _
    "z = ± " & z

    の記述部を、
    少し安易で、
    稚拙はありますが、

    If z <> 0 Then
    MsgBox "zの二乗 = " & (x - 3) ^ 2 + (y - 2) ^ 2 & vbCrLf & _
    "z = ± " & z
    Else
    MsgBox "zの二乗 = " & (x - 3) ^ 2 + (y - 2) ^ 2 & vbCrLf & _
    "z = " & z
    End If


    にする方法はあります。
    この点は、
    もっとスマ-トな、
    回避法はあるとは思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2016/10/27 09:30:26

丁寧に教えていただき、ありがとうございます。とても助かりました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる