数年前に、vb6.0とSQL Server 2000を使用してアプリケーションを開発しました。最近、一部のお客様から、アプリケーションの実行中に、Winxp sp2をO/Sとして使用する一部のコンピューターで、検索フォームを表示しようとすると、次のエラーが表示されるとのことです。
「実行時エラー380:無効なプロパティ値」
このエラーの原因は何ですか?
アプリケーションでマスクされた編集ボックスを使用していると思いますか?これは比較的よく知られている問題であり、Microsoftによって次のように文書化されています。
http://support.Microsoft.com/kb/177088
この記事ではVB4と5について言及していますが、VB6についても同様です。
[〜#〜]編集[〜#〜]
さらなる研究で、他のコントロールについてもこの問題への言及を見つけています。 Windowsでアプリケーションを再コンパイルするXPを実行しているユーザーの場合XPは、おそらく動作するバージョンを生成しますが、理想的なソリューションではありません...
ちょうど私の2セントを投入する:私の経験でこのエラーの別の一般的な原因は、フォーム上のコントロールのサイズを変更するために数学を使用する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 twips未満に変更されると、「無効なプロパティ値」エラーを発生させます。これが問題である場合、最も簡単な解決策は、最初の行としてOn Error Resume Next
を追加して、これらの種類のエラーが無視されるようにすることです。これは、On Error Resume Next
があなたの友達であるVB6のまれな状況の1つです。
実行時エラー38 の原因は何ですか?オブジェクトまたはコントロールのプロパティを許可されていない値に設定しようとしています。検索フォームが読み込まれたときに実行されるコード(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 Suiteをインストールする場合は、一部の言語オプションを削除してください。プロセスモニターでこれを掘り下げて、その理由を見つけました。私たちにとっては、これら2つのフォントファイルでした。
DFKai71.ttf dfmw5.ttf
同じ問題があり、これらの2つのフォントファイルをwindows\fontsフォルダーから削除することで修正されました。
2017わかっています...しかし、誰かがコードのメンテナンス中にこの問題に直面しています。
このエラーは私が試したときに発生しました:
maskedbox.Mask = "#.###"
maskedbox.Text = "12345678"
これを修正するには、PromptIncludeプロパティを "false"に設定します。
このエラーの1つの理由は、コードの非常にばかげた間違いです。適切な値がActiveXのプロパティに渡されない場合、このエラーもスローされます。
同様に、空の値がFont.Nameプロパティに渡されるか、テキスト値がHeightプロパティに渡されます。
基本的に問題は、どのバージョンのO/Sでプログラムがコンパイルされ、どのバージョンのO/Sでプログラムが実行されているかという事実にあると思います。特に、プログラムが古いバージョンのdllおよびocxファイルでコンパイルされ、セットアップ中に最新のdllおよびocxファイルが保持されている場合、同様のエラーを引き起こす多くの更新されたdllおよびocxファイルを見ました。
画面内のコントロール(ラベル、フレーム、テキストなど)を画面の境界外に配置している可能性があります。一部のコントロールの位置が変数に依存していて、その変数が開始時に正しく定義されていない場合、このエラーメッセージが表示されることがあります。
両方のコンピューターで異なる画面解像度を使用している可能性があります。そしてそれが理由かもしれません。
プログラムのバグを見つけるために、この行をすべてのサブに配置します。
これで問題が解決した場合は、すべてのサブでこの行を1つずつクリアして、問題が再発するかどうかを確認する必要があります。具体的なサブルーチンでこの行を削除した後に問題が再発すると、バグを格納するサブルーチンがわかります。そこを検索すれば、あなたはそれを見つけるでしょう。
本当にばかげたことの多くがこのエラーを引き起こす可能性があります。私が遭遇したのは、デフォルトでWindows 8に含まれなくなったフォント-Courier Newです。 VB6アプリケーションの名前は、いずれかの形式でハードコードされていたため、起動時にメッセージが表示されました。
上記の答えは、プログラムを作成してコンパイルしているときのものですが、私はベンダーのソフトウェアCatalog.exe
を使用しています。これは、「Ex Libris」によるVoyager
カードカタログの一部であり、私はmエラーも取得:
catalog-error.png http://img805.imageshack.us/img805/8275/catalogerror.png
2つのWindows 7 32ビットマシンを使用しています。新しいものは私にエラーを与えていますが、古いものではうまくいきます。私はGoogleで多くの調査を行いましたが、ここでは、この問題に関連して人々が言っていることをいくつか発見しました。たぶん、これらは私にとってはうまくいきませんでしたが、次のいずれかがあなたのエラーを修正するのに役立ちます:
Run-Time Error 380
を引き起こす可能性があります(更新してみてください)sfc /scannow
Run as Administrator
)他の人が言っていることから(David Mのように)MSVBM60.DLL
ライブラリに関連している可能性があると思います-しかし、私のコンピュータの両方でこのファイルはまったく同じ(同じバージョン、サイズ、日付など)のようです。
そのファイルは異なっていなかったので、アプリケーションが使用できる他の(dll)ファイルを見つけようとしたので、 Process Explorer by Sysinternals を起動し、アプリケーションを確認しました(ロードしてからクラッシュしました)あなたがそれを「接続する」と言うとき)、そして以下のスクリーンショットは私が見つけたものです。
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を再インストールすることは大したことではありませんが、修正や回避策を見つけ出せれば、深刻な時間を節約できます。
プログラムを起動するときに再利用されるプログラムウィンドウの座標またはサイズを格納するソフトウェアを作成するか、作成されたソフトウェアを使用する場合は、その原因となるサイズと位置の発生がないかどうかを確認してください。私は、さまざまなベンダーから、フォームのサイズに基づいて「フォーム」(プログラムウィンドウ)のコントロールのサイズを変更して再配置するコードを怠惰に作成することを何度も繰り返し見ました。 HKLM\Software\Vendor\ProgramおよびHKCU\Software\Vendor\Programを確認します。問題を起こしている可能性のある特定のキーを探します。 WindowsPosXとWindowPosYと呼ばれるキーのプログラムウィンドウの位置に-48000のプログラムストアがありました。タスクバーでプログラムの起動と実行を確認できますが、プログラムウィンドウ自体は48000(絶対値は-48000)よりも小さいため、完全に画面の外に配置されていました。レジストリ情報の編集に慣れていない場合(ほとんどの人はそうではありません)、ソフトウェアをアンインストールし、レジストリクリーナーを使用して残りのエントリを削除してから、ソフトウェアを再インストールし、問題が解決しないかどうかを確認します。