9

"Dates" (オブジェクト名は A_Dates) という名前のワークシートがあり、アクティブ化されたときに計算する必要があります (これは私の個人用マクロ ブックにあることに注意してください)。自動計算をオンにするには計算が多すぎるワークブックを定期的に開いています。そこで、自動計算を手動に設定し、ワークシートに次のコードを追加しました。

Private Sub Worksheet_Activate()
   A_Dates.Calculate
End Sub

これは、過去3か月間、毎日、毎日うまく機能しています。昨日、動作しなくなりました。宣言行で次のエラーがスローされるようになりました。

Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]

以下を使用して、シートの参照方法を変更しようとしました。

Sheets("Dates").Calculate

ActiveSheet.Calculate

無駄に。エラー処理も含めました。

On Error Resume Next

それはそれを妨げません。私はこれまでに行ってきました:

Private Sub Worksheet_Activate()
   On Error GoTo headache
   Sheets("Dates").Calculate
Exit Sub

headache:
   Exit Sub
End Sub

そしてそれはまだ現れています。私は完全に途方に暮れています。ヘルプ?

追加情報

次の参照があり、このブックのさまざまなマクロでそれらすべてを使用しています。

アプリケーション用の Visual Basic

  • Microsoft Excel 12.0 オブジェクト ライブラリ
  • OLE オートメーション
  • Microsoft Office 12.0 オブジェクト ライブラリ
  • Microsoft スクリプティング ランタイム
  • Microsoft Forms 2.0 オブジェクト ランタイム
  • Microsoft HTML オブジェクト ライブラリ
  • Microsoft インターネット コントロール
  • Microsoft ActiveX データ オブジェクト 2.8 ライブラリ
  • Microsoft ActiveX データ オブジェクト レコードセット 2.8 ライブラリ
4

9 に答える 9

14

私たちは同じ問題に遭遇しましたが、ひねりがあります - 同じマクロをうまく使っている人が何人かいますが、1 人は「自動化エラー」「特定されていないエラー」の問題を抱えています。 もう1つの回答は、問題が「Microsoft ProgressBar Control」に起因する可能性があることを特定するのに役立ちました。(どうもありがとうございました)

しかし、フォームを削除する代わりに、MSCOMCTL.OCX の登録を解除して、問題が発生していたユーザーの PC に登録したところ、ユーザーは再びビジネスを再開しました。コントロールの登録がうまくいかなかった原因を知りたいです。このコントロールの問題を突き止めなければならなかったのはこれが初めてではありません。

コントロールを登録解除および登録するには:

「昇格されたコマンド プロンプト」 (管理者として実行されるコマンド プロンプト) を使用して、次のコマンドを発行します。

 Regsvr32 /u c:\windows\SysWOW64\MSCOMCTL.OCX

 Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX

注: /u は ocx の登録を解除します

于 2012-09-19T19:34:39.323 に答える
8

このような奇妙なエラーが発生するたびに、最初に行うことはhttp://www.appspro.com/Utilities/CodeCleaner.htmでコードをクリーンアップすることです。これは無料のアドインですが、手動でも実行できます。コードをモジュールからテキスト ファイルにコピーするだけです (または、右クリックしてエクスポートします)。次に、モジュール内のコードを削除し、コンパイルして保存し、コードを元に戻します。

Excel が「オンザフライ」でコンパイルすると、p コードが作成され、それがマシン コードにコンパイルされます。ときどき、特に大量の編集を行うと、p コードが破損することがあります。コードをコピーして削除し、コピーして戻すと、Excel は p-code を強制的に再生成します。

この方法でいくつかの本当に奇妙な動作を解決しました。うまくいけば、それもあなたのために働く.

于 2012-09-04T22:03:54.873 に答える
5

問題が見つかりました。私のフォームの 1 つに、明らかに機能しなくなったコントロールがあり、これが波及効果をもたらしました。

問題のコントロールは「Microsoft ProgressBar コントロール、バージョン 6.0」でした。なぜ機能しなくなったのかはわかりませんが、フォームを削除すると(そしてもちろん、フォームへのすべての参照も)問題が解決しました。

于 2012-09-05T04:59:00.487 に答える
0

VBAコードの2つの「正確な」ブロックがあり、1つは実行され、もう1つはオートメーションエラーがありました。デバッガーを実行したところ、以下のコード ブロックでスタックしました。

Do While ie.readyState = READYSTATE_COMPLETE
Application.StatusBar = "Going to StackOverflow ..."
DoEvents
Loop

そこで、動作するコード ブロックと動作しないコード ブロックを別々の Microsoft Word 文書に貼り付け、レビュー/比較機能を使用しました。エラーが明らかになりました:

Do While ie.readyState = READYSTATE_COMPLETE (等号 - 不正解)

対。

Do While ie.readyState <> READYSTATE_COMPLETE (二重括弧 - 正しい)

視覚的にわかりにくい場合は、Word を使用して支援することを強くお勧めします。

はい!

于 2020-04-21T22:35:46.167 に答える