数年前に vb6.0 と SQL Server 2000 を使用してアプリケーションを開発しました。最近、一部のお客様から、OS として Winxp sp2 を使用する一部のコンピューターでアプリケーションを実行しているときに、検索フォームを表示しようとすると次のエラーが発生するという報告がありました。
「実行時エラー 380: 無効なプロパティ値です」
このエラーの原因は何ですか?
数年前に vb6.0 と SQL Server 2000 を使用してアプリケーションを開発しました。最近、一部のお客様から、OS として Winxp sp2 を使用する一部のコンピューターでアプリケーションを実行しているときに、検索フォームを表示しようとすると次のエラーが発生するという報告がありました。
「実行時エラー 380: 無効なプロパティ値です」
このエラーの原因は何ですか?
あなたのアプリケーションはマスクされた編集ボックスを使用していると思いますか? これは比較的よく知られた問題であり、Microsoft によって次のように文書化されています。
http://support.microsoft.com/kb/177088
この記事では VB4 と 5 について言及していますが、VB6 についても同じことが言えると確信しています。
編集
さらなる調査で、他のコントロールでもこの問題への言及を見つけています。XP を実行しているユーザー向けに Windows XP でアプリケーションを再コンパイルすると、おそらく動作するバージョンが生成されますが、理想的な解決策ではありません...
私の経験では、このエラーのもう 1 つの一般的な原因は、Form_Resize
数学を使用してフォーム上のコントロールのサイズを変更するイベントのコードです。コントロール ディメンション (Height
およびWidth
) は負の値に設定できないため、イベントで次のようなコードを使用Form_Resize
すると、このエラーが発生する可能性があります。
Private Sub Form_Resize()
'Resize text box to fit the form, with a margin of 1000 twips on the right.'
'This will error out if the width of the Form drops below 1000 twips.'
txtFirstName.Width = Me.Width - 1000
End Sub
上記のコードでは、フォームのサイズが 1000 twip 未満に変更された場合、「無効なプロパティ値」エラーが発生します。これが問題である場合、最も簡単な解決策はOn Error Resume Next
最初の行として追加することです。これにより、これらの種類のエラーは無視されます。On Error Resume Next
これは、あなたの友達がVB6 のまれな状況の 1 つです。
実行時エラー 380の原因は何ですか? オブジェクトまたはコントロールのプロパティを許可されていない値に設定しようとしています。検索フォームがロードされたときに実行されるコード (Form_Load など) を調べて、プロパティを実行時の値に依存するものに設定するコードを探します。
私の他のアドバイスは、エラー処理とログを追加して、エラーの原因となっている正確な行を追跡することです。
Erl
ます - MZTools は自動的に行番号を入力できます。_
On Error Goto Handler
<routine contents>
Handler:
Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
日付に使用されたマスクされた編集ボックス コントロールで同じ問題が発生しました。エラーは、ウィンドウの地域設定の日付形式プロパティが原因でした。「M/d/yyyy」を「dd/MM/yyyy」に変更すると、すべてうまくいきました。
古いスレッドですが、ここに答えがあります。
voyager で問題のあるフォント
すなわち。Corel スイートをインストールする場合は、いくつかの言語オプションを削除してください。プロセス モニターを使用してこれを掘り下げ、その理由を突き止めました。この 2 つのフォント ファイルが原因でした。
DFKai71.ttf dfmw5.ttf
同じ問題があり、windows\fonts フォルダーからこれら 2 つのフォント ファイルを削除することで修正されました。
基本的に問題は、どのバージョンの O/S でプログラムがコンパイルされ、どのバージョンの O/S でプログラムが実行されているかという事実にあると思います。特に、プログラムが古いバージョンの dll および ocx ファイルでコンパイルされ、セットアップ中に最新の dll および ocx ファイルが保持されている場合に、同様のエラーを引き起こす更新された dll および ocx ファイルを多数見てきました。
上記の回答は、プログラムを作成してコンパイルしているときのもののようですが、「Ex Libris」によるカードカタログCatalog.exe
の一部であるベンダーのソフトウェアを使用していて、エラーも発生しています。Voyager
catalog-error.png http://img805.imageshack.us/img805/8275/catalogerror.png
Windows 7 32 ビット マシンが 2 台あります。新しいものではエラーが発生しますが、古いものでは問題なく動作します。Google で多くの調査を行った結果、この問題に関連して人々が言っていることの一部を以下に示します。おそらく、これらのいずれかがエラーの修正に役立つかもしれませんが、私にはうまくいきませんでした:
Run-Time Error 380
(更新してみてください)sfc /scannow
Run as Administrator
)(David M のような) 他の人が言っていることから、MSVBM60.DLL
ライブラリに関連している可能性があると思いますが、私の両方のコンピューターで、このファイルはまったく同じ (同じバージョン、サイズ、日付など) のようです。
そのファイルに違いはなかったので、アプリケーションが使用できる他の (dll) ファイルを見つけようとしたので、Sysinternals によって Process Explorerを起動し、アプリケーションを調べました (ロードしてから、「接続するように指示するとクラッシュします」)。 ")、そして以下のスクリーンショットは私が見つけたものです。
screen1.png http://img195.imageshack.us/img195/2231/screen1oo.png
screen2.png http://img88.imageshack.us/img88/2153/screen2ao.png
さて、私は Windows / VB プログラマーではなく、ただのパワー ユーザーなので、何をすべきかについて知識が尽きたところです。ソフトウェア ベンダーに問い合わせたところ、Windows の再インストールを勧められました。それはおそらくうまくいくでしょうが、このプログラムは Windows 7 で実行できるのに、この特定のシステムの何かがエラーを引き起こしているということだけが私を悩ませています。最後に、これはすでに複数のマシンに展開されているイメージなので、一度 Windows を再インストールすることは大したことではありませんが、修正または回避策を見つけられれば、かなりの時間を節約できます。
このエラーの原因の 1 つは、コードの非常にばかげたミスです。ActiveX のプロパティに適切な値が渡されていない場合も、このエラーがスローされます。
空の値が Font.Name プロパティに渡されるか、テキスト値が Height プロパティに渡されます。
画面の境界の外にあるコントロール(ラベル、フレーム、テキストなど)を画面に配置している可能性があります。一部のコントロールの位置が変数に依存し、その変数が開始時に正しく定義されていない場合、このエラー メッセージが表示されることがあります。
両方のコンピューターで画面解像度が異なる可能性があります。そして、それが理由かもしれません。
プログラムのバグを見つけるには、すべてのサブルーチンに次の行を追加してください: on error resume next
これで問題が解決した場合は、すべてのサブでこの行を 1 つずつクリアし、問題が再発するかどうかを確認する必要があります。具体的なサブルーチンでこの行を削除した後に問題が再発すると、バグを格納しているサブルーチンがわかります。そこで検索すると出てきます。
Santos@etronorte.com
多くの本当にばかげたことがこのエラーを引き起こす可能性があります。私が遭遇したのは、デフォルトで Windows 8 に含まれなくなったフォント、Courier New です。VB6 アプリケーションの名前は、フォームの 1 つにハードコードされていたため、起動時にメッセージが表示されました。