- 締切済み
VisualBasic でInputbox関数を使う方法について
入力ボックスを表示し、その中に入力された数値を変数に格納したいのですが、.NETのときは動作したのですが、VB2005ですと、エラーとなってしまいます。何か設定項目があるのでしょうか?ご教示お願い致します。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Decimal i = InputBox("メッセージ", "値を取得") End Sub End Class なお、helpから検索したVisual Basic 言語リファレンスの「InputBox 関数 (Visual Basic)参照 使用例」に掲載されているソースをそのまま実行してもエラーが帰ってきます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- dsuekichi
- ベストアンサー率64% (171/265)
とりあえず、MSのHPで 「Microsoft.VisualBasic.CompilerServices.VBInputBox.resources」 を検索すると、 (http://search.microsoft.com/results.aspx?q=Microsoft.VisualBasic.CompilerServices.VBInputBox.resources&qsc1=0&SearchBtn1=Search&FORM=QBME4&l=1&mkt=en-GB&PageType=99) と、いくつかHITしますね。 # 但し、MSの公式な記事ではなく、フォーラムへのQ&Aですけど・・・ モジュール配布時のセキュリティの設定誤りや、 共有環境での使用で発生する、レアケースのようですね。
- dsuekichi
- ベストアンサー率64% (171/265)
> VB2005ですと、エラーとなってしまいます。 > 等々試してみましたが動作しません。 結局どういう状況なんです? No1さんの回答は > Option Strict On で 'String' から 'Decimal' への暗黙的な変換はできません。 と言うエラー限定の対応策です。 それを試したって事は、このエラーだったって事ですか? でも、 > helpから検索したVisual Basic 言語リファレンスの「InputBox 関数 (Visual Basic)参照 使用例」 は、このエラーにはならないはずですが・・・ 具体的な情報(エラーメッセージ等)を教えてください。 #ちなみに、私のVB2005では、InputBoxはちゃんと動作します。
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 エラーとは、 Option Strict On で 'String' から 'Decimal' への暗黙的な変換はできません。 というエラーでしょうか? であればの話ですが、 ソリューションエクスプローラで対象の プロジェクトを右クリックしてプロパティ→ コンパイルタブに移動 Option Strict が On になっていますか? 個人的には On にしたままコーディングすることをお勧めしますが Off にすることで、とりあえずエラーはでなくなります。 Option Strict On の状態のままでコーディングするのであれば 以下のような方法でキャストしてやらなければなりません。 i = CDec(InputBox("メッセージ", "値を取得")) または Decimal.TryParse(InputBox("メッセージ", "値を取得"), i) など。
補足
有難う御座います。ご指摘のとおり実行したり、たとえば、 Dim i As Integer i = CInt(InputBox("メッセージ", "値を取得")) 等々試してみましたが動作しません。 .NETなら何も問題ありませんのに・・
補足
「Missing Manifest Resource Exception はハンドルされませんでした。」というボックス が、InputBox関数からポップアップされて表示されます。その中のエラーメッセージは 指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。"Microsoft.VisualBasic.CompilerServices.VBInputBox.resources" が適切に埋め込まれたか、実行時にアセンブリ "Microsoft.VisualBasic" にリンクされたか、または必要なサテライト アセンブリが読み込まれて完全に署名されていることを確認してください。 ということです・・・