• ベストアンサー

EXCEL VBAでimput Boxメソッドを使用について

Public Sub test() Dim LL As Double MsgBox = "距離を指定してください。マウスで操作できます。" MsgTitle = "距離指定" LL = Application.InputBox(Prompt:=MsgBox, Title:=MsgTitle, _Type:=1) If LL > 99999 Then U1 = 0 MsgBox "距離は無限大で,初期角度は" & U1 & "です。" Else U1 = -1 / (LL + Sheet1.Cells(15, 3).Value) MsgBox "距離は" & LL & "で,初期角度は" & U1 & "です。" End If End Sub 見よう見まねで上記のプログラムを作成しましたが、 「コンパイルエラー:代入式の左辺の関数呼び出しは、オブジェクト型かバリアント型の値を返さなければいけません。」となってしまいますがエラーの意味がちょっと良くわかりません。 これを動かそうとしたときどうしたらいいのでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

とりあえずこれでうごくかな。 Public Sub test() Dim LL As Double Msg = "距離を指定してください。マウスで操作できます。" MsgTitle = "距離指定" LL = Application.InputBox(Prompt:=Msg, Title:=MsgTitle, Type:=1) If LL > 99999 Then U1 = 0 MsgBox "距離は無限大で,初期角度は" & U1 & "です。" Else U1 = -1 / (LL + Sheet1.Cells(15, 3).Value) MsgBox "距離は" & LL & "で,初期角度は" & U1 & "です。" End If End Sub

dadao
質問者

お礼

やったー!!動きました。 実際は Msg MsgTitle をStringで、U1をDoubleで変数を規定するのを 追加しましたが、MsgBoxからBoxを抜く視点を与えられて満足です。 実際、ここからまだまだ長いプログラムを書かないといけないので また良かったらお願いします。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

Application.InputBoxとしている場合、受け取る変数をDoubleで 規定することは出来ません。要するに「セルに書き込まれる」のと 同じですから。 回避するには、バリアント型の変数で一旦Application.InputBox の結果を受けておいてから、Cdblで型変換をするか、 そもそもApplication.InputBoxではなく、単純なInputBox関数に するかです。

dadao
質問者

お礼

即答ありがとうございます。 CDblで型変換、今回は使用しませんでしたが、確かにできそうですね。 また、すぐに別の質問もすると思うので、よろしくお願いします。

関連するQ&A