0

Excel.Sheet.8Visual Basic 6.0で記述され、クラスオブジェクトでいくつかのOLEコントロールを使用するアプリケーションを維持しています。何人かのユーザーは、Excelオブジェクトを操作しようとするコードのポイントに到達すると、次のエラーが発生します。

実行時エラー'91':オブジェクト変数またはブロック変数が設定されていません

以下は、このエラーをトリガーするコードの例です。この問題は次の場所で発生すると思います。

Set oExcel = oleXl.object

これが発生するコードのポイントは次のとおりです。

Private Sub Form_Load()
    Dim i As Integer
    Dim j As Integer
    Dim sTempStringA As String
    Dim sTempStringB As String

    'Set up excel sheet
    centerform Me

    Set oOutGrid = oleXlOutput.object
...


Private Sub Form_Load()

centerform Me
Set oOtherFx = oleXlFx.object
...

Private Sub Form_Load()
Dim iRet As Integer
Dim i As Integer

On Error GoTo Err_Handler

centerform Me

Call InitArray

Me.Caption = "TJUJ | Version " & version & " | Enter Custom Fx"
Set oBook = oleExcel.object
...

このコード行からこのエラーが生成される特定の状況または環境、またはコードのこの時点でオブジェクトに常にアクセスできるようにする方法はありますか?

エラーはたまにしか発生せず、開発者のマシンではまったく再現できません。また、発生しているマシンにアクセスできませんが、EXCEL.EXEプロセスのインスタンスが実行されているときに発生するようです。

4

2 に答える 2

0

ランタイムエラー91が発生した場合、ステートメントのどこかに初期化されていないオブジェクトがあることは間違いありません。つまり、値がNothingの変数/オブジェクトのプロパティまたはメソッドを使用しようとしています。

あなたの例では、oleXl、oleXlFx、およびoleExcelはおそらく何もありません。したがって、それらの.objectプロパティを参照すると、RTEがトリガーされます。

コードのどこかで、これらの変数を何かに初期化する必要があります。Set oleXl = CreateObject("Excel.Application")またはのようなステートメントを探しますSet oleXl = New Excel.Application

1つの提案; これらのOLEオブジェクトを実際に初期化するステートメントを見つけたら、エラー処理がどのようにコーディングされているかを確認してください。このようなものを見た場合:

On Error Resume Next
Set oleXl = CreateObject(...

オブジェクトがインスタンス化されたことを確認するためのテストを追加します

On Error Resume Next
Set oleXl = CreateObject(...
If oleXl Is Nothing Then
   MsgBox "Hey, my object is Nothing!"
End If
于 2008-12-19T20:18:58.427 に答える
0

Microsoft は、新しいレジストリ キーを作成することでエラー 91を修正できることを提案しています。新しいキーを作成するには、次の手順に従います。

  • Windows の [スタート] メニューをクリックします。
  • 検索Regeditボックスに入力します
  • Enterキーを押します
  • レジストリで次のエントリを見つけます。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server
  • トランザクションサーバーを選択して右クリックします
  • [新規] を選択し、[キー] を選択します
  • キーに次の名前を付けますDebug
  • Debug キーを右クリックし、New を選択します。
  • [キー] を選択し、キーに次の名前を付けます。RunWithoutContext

参照: http://backspacetab.com/error-91/

于 2011-07-15T11:32:14.177 に答える