• 締切済み

VB6.0において

今、OS windows2000/VB6.0を使用してプグラムをしています。プログラムが完成し、コンパイルも通るのですが、項目で会社名というのが抜けている時だけ、「実行時エラー'94' NULLの使い方が不正です。」というウィンドウが出てきて、OKを押すと画面が閉じてしまうのですが、このOKを押した時にメニュー画面に戻すようにしたいのですが、自分では「実行時エラー'94' NULLの使い方が不正です。」などという文言は書いていないので、VBに元から記述されている物だと思うのですが、どこに実行時エラーの事が書いてあるのかわかりません。 もし、わかる方がおりましたら、教えていただきたいと思います。よろしくお願いします。

みんなの回答

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.4

会社名って言うぐらいですから、業務で使うんでしょうね。 >どこに実行時エラーの事が書いてあるのかわかりません。 VBアプリでは、実行時エラーの場合 このようなエラーメッセージを出力して、勝手に強制終了してしまいます。 ですから、#2さんの指摘されているように エラーの起こりうるプロシージャにエラートラップを掛けるのが普通です。 こんな感じで。 Private Sub Hoge() On Error Goto Err_Trap: '処理をここで記述 Exit Sub 'これが無いとエラーでないときもエラー処理してしまう Err_Trap: Msgbox Err.Description End Sub ただし、エラーは起こらないようコーディングするのが原則です。 この場合だとMsgBox関数でエラーの文言を出力していますが、これはあくまでデバッグのためだと考えてください。 そういう意味でも、#3さんが指摘されていますが 基本的な項目のバリデーションチェックをするべきです。 (会社名が入力されていなければ処理しないなど)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.3

その手のエラーならエラー処理を追加してエラーの発生を抑制するのではなく、そもそも根本的に修正すべきことかと思いますが。 まぁ単純に「会社名」が空白だった時に、仮の値を入れるとかですむ問題だったりするのではないかなと。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

Go To」文でエラートラップを設けて「Err.No」(この場合は'94')で「If~Then」または「Select Case」文で振り分けて、「Err.No = 94」で引っかかったら、メニュー画面に遷移させる処理をして「Exit Sub」で抜けるって処理をしてみてはいかがですか? ただ、項目「会社名」のバリデーションチェックは大丈夫でしょうか?

回答No.1

簡単に言うと そのプログラムはバグってます。 マニュアルで「ERROR」もしくは「ERR」で探してみてください

関連するQ&A

  • vb6について

    会社で、GPIB、I/O、ActiveXコンポーネントの環境下で、 VB6のプログラムを使用して試験評価を行っているのですが、 VB6のコードを変更するにあたり、うまくいきません。 どなたかご教授願います。 内容は、 コードを変更したいので、元々の.vbpを開くと、 まず、「オブジェクトライブラリは登録されていません」とエラーが出ます。 その後、「プロジェクトのロードを続けますか?」となるので、OKを押します。 すると、「読み込み中にエラーが発生しました。・・・.logを参照してください」と出ます。 気にせず、OKを押し、コードの内容を変更したあと(※変更しなくても)、 プロジェクトの上書き保存をしたあと、.exeの作成(上書き)をすると、 また、「読み込み中にエラーが発生しました。・・・.logを参照してください」と出ます。 気にせず、OKを押し、作成した.exeを開くと、変更した内容になっていますが、 いざ、実行すると、「実行時エラー”13” 型が一致しません」とエラーが出ます。 .logの内容を確認すると、”クラス・・・がロードされていません”とか、 ”プロパティ名・・・が不正です”とか表示されています。 試験する上で、使用しやすいようにVB6のコードを変更したいのですが、 試験で使用しているPCで元々のコードを変更しようとすると、上記のようなエラーが出ます。 どなたか、解決方法を教えてください。

  • VB6.0⇒VB2008のコンバートについて

    ある端末でVB6.0のプログラムをVB2008へコンバートしました。 その後、別のVB6.0がインストールされていない端末でプログラムを実行しようとしたところ、"COMExceptionはハンドルされませんでした。"とエラーが発生しました。 上記のコンバートしたプログラムではソケット通信でwinsockを利用していました。 そのためプログラムを修正して、winsockを利用しないようにしたところ、エラーがなく実行できました。 おそらく、VB6.0がインストールされていない事が原因だと思うのですが、いまいちわかりません。 どなたかご教授お願いします。

  • VB6のプログラムをVS2017で開くには?

    VB6や、VC++で作成されたプログラムを VisualStduio2017へ移行することになりました。 VisualStduio2017で、VB6やVC++のプロジェクトを開いて コンパイルエラーになる部分を手修正していこうと思ったのですが、 そもそも開くことができません。 新たにプロジェクトを作成して、ソースコピーをして貼り付けし、 コンパイルエラーになる部分を手修正するようなやり方ぐらいしかないでしょうか?

  • VB6でaccess2010へADO接続できない

    VB6で作成し、コンパイルしたプログラムをサーバー側(2008R2の64bit)で動かすと、接続の所でエラーが出ます。 クライアント側(win7の64bit)でデバック実行した場合は問題なく動作しています。 原因として何が考えられますでしょうか? どんな小さな事でも結構ですので教えて下さい。 よろしくお願いします。

  • 実行時エラーについて

    お世話になっています。教えて下さい。 VBで作ったプログラムです。 デバッグ時には何の問題もなく、実行可能(完全コンパイル後に実行)で、コンパイルも問題なく通りますが、EXEにして実行すると、以下のエラーが出ます。 実行時エラー:'91' object変数、またはwithブロック変数が設定されていません。 どなたか、原因に心当たりがある方、いらっしゃったら教えて下さい。 よろしくお願いします。

  • VB.netについて質問です。(2つ)

    まず、コンパイルのやり方がわかりません。 VB6.0を今まで学習していました。VB6.0だったら、 メニューバー→実行ファイル作成(*.exe) …で、できたのですがVB.netにはなかったです。 MSDNを拝見したら、コマンドから コンパイルするような事が記載されていたんですが 見ながらやっても、さっぱりです。 実際の具体例を教えていただけないでしょうか? VB6.0の場合、ネットワーク通信を行う際… Winsockというオブジェクトを使って通信を行いましたが VB.netの場合、どのオブジェクトが該当するのでしょうか? インストールした段階なので、標準のオブジェクトに 無い場合は、コンポーネントからインポート(?)するような 方法も教えてください。 よろしくお願いします。(^^)

  • VB6→Access2000

    OSはNT4.0です。VB6でプログラムを組んでいます。 データベースソフトはAccess2000です。 プログラムを実行すると【データベースの形式’ (データベースファイル名が表示)’を認識できません。】というメッセージボックスが表示されます。そのメッセージボックスにあるヘルプをクリックすると '項目' (Error 524)このエラーは、現在実行中のオートメーション オブジェクト内で発生しました。 と表示されまして、解決できません。 Accessの機能にある【MicroSoft Accessの旧バージョンのデータベースに変換】を行い、プログラムを実行すると動くのですが旧バージョンだというメッセージボックスが表示され使い勝手が非常に悪いです。何が悪いのでしょうか?

  • VBがデバッグ時落ちてしまう

    VC6.0でDLLを作成し、VB6.0で呼び出すプログラムを作成しています。 DLLの内容はWindowハンドルを引数にしてそのハンドルを持つWindow上にListboxを作成するというようなものです。(もともとC言語用のDLLだったものをVBで使いまわしています) このプログラムをデバッグ実行し、デバッガ上で停止[実行->終了]とすると、VB6.exeがアプリケーションエラーで落ちてしまいます。(DLLの関数を呼ばない限り大丈夫です) デバッグ実行でも普通に終了(アプリケーションでの終了)であれば正常に終了してくれます。 このままですと、実行時エラーで止まる度にVB6.exeが落ちてしまい非常に不便です。 このような現象で困った方いませんか? 解決策がありましたら教えてください。

  • VBのような画面インターフェースを用いてWMIを使いたい

    現在、WMIやLDAPをVBSで記述して運用管理を行っています。 しかし、拡張子vbsファイルを1本づつ起動しながら処理を行っている為、 他の人に分かりづらく、ファイル管理もしづらい状態です。多少はインプットボックスも使用して分かり易くしているのですがもう限界です。 なので、いっそのことVBライクな画面を作ってツール化をしようと思っているのですが、Visual Studio(2005・2008)でWMIやLDAPをVBで直接記述をするとコンパイルエラーになってしまいます。しかし、VBで作成した画面からVBSファイルを呼び出すというのはちょっとかっこ悪いかなと思っているので、なんとか直接記述してツールを作成したいと思っています。 どなたかWMIをEXEツール化する為の良い方法をご存知の方はいらっしゃいませんか?ちなみに環境の都合上、ASPは対象外です。 どうぞよろしくお願い致します。

  • エクセルでマクロを実行するとコンパイルエラー

    エクセルでVBエディタでソースコードを記述し、マクロを実行すると、コンパイルエラー、「SubまたはFunctionが定義されていません」とエラーが出ます。これはどういうエラーですか?何が間違っているのですか?

専門家に質問してみよう