みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

見よう見まねで上記のプログラムを作成しましたが、
「コンパイルエラー:代入式の左辺の関数呼び出しは、オブジェクト型かバリアント型の値を返さなければいけません。」となってしまいますがエラーの意味がちょっと良くわかりません。
これを動かそうとしたときどうしたらいいのでしょうか?

投稿日時 - 2007-04-17 15:25:29

QNo.2928447

すぐに回答ほしいです

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

とりあえずこれでうごくかな。

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

投稿日時 - 2007-04-17 15:36:09

お礼

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

投稿日時 - 2007-04-17 15:53:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Application.InputBoxとしている場合、受け取る変数をDoubleで
規定することは出来ません。要するに「セルに書き込まれる」のと
同じですから。

回避するには、バリアント型の変数で一旦Application.InputBox
の結果を受けておいてから、Cdblで型変換をするか、
そもそもApplication.InputBoxではなく、単純なInputBox関数に
するかです。

投稿日時 - 2007-04-17 15:38:39

お礼

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

投稿日時 - 2007-04-17 15:56:55

あなたにオススメの質問