- ベストアンサー
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 見よう見まねで上記のプログラムを作成しましたが、 「コンパイルエラー:代入式の左辺の関数呼び出しは、オブジェクト型かバリアント型の値を返さなければいけません。」となってしまいますがエラーの意味がちょっと良くわかりません。 これを動かそうとしたときどうしたらいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずこれでうごくかな。 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
その他の回答 (1)
- FEX2053
- ベストアンサー率37% (7991/21371)
Application.InputBoxとしている場合、受け取る変数をDoubleで 規定することは出来ません。要するに「セルに書き込まれる」のと 同じですから。 回避するには、バリアント型の変数で一旦Application.InputBox の結果を受けておいてから、Cdblで型変換をするか、 そもそもApplication.InputBoxではなく、単純なInputBox関数に するかです。
お礼
即答ありがとうございます。 CDblで型変換、今回は使用しませんでしたが、確かにできそうですね。 また、すぐに別の質問もすると思うので、よろしくお願いします。
お礼
やったー!!動きました。 実際は Msg MsgTitle をStringで、U1をDoubleで変数を規定するのを 追加しましたが、MsgBoxからBoxを抜く視点を与えられて満足です。 実際、ここからまだまだ長いプログラムを書かないといけないので また良かったらお願いします。