Frage

Ich bin Aufrechterhaltung einer Anwendung, die Verwendung von mehreren Ole-Steuerelemente mit Excel.Sheet.8 Klasse Objekte in Visual Basic 6.0 und macht geschrieben wurde. Mehrere Benutzer erhalten die folgende Fehlermeldung, wenn sie einen Punkt im Code erreichen, die die Excel-Objekte zu manipulieren versucht.

  

Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht gesetzt

Im Folgenden sind Beispiele für den Code, der diesen Fehler auslösen. Ich glaube, dass das Problem tritt auf:

Set oExcel = oleXl.object

Hier sind die Punkte in dem Code, wo es passiert:

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
...

Gibt es eine spezielle Situation oder Umgebung, in der dieser Fehler aus dieser Codezeile erzeugt werden würde, oder eine Art und Weise, dass ich die Aufgabe sicherzustellen, wird immer an dieser Stelle zugänglich seine im Code?

Der Fehler tritt nur gelegentlich, und ich kann es gar nicht auf meinem Entwickler Maschine reproduzieren. Ich habe auch keinen Zugang zu den Maschinen, die es geschieht, aber es scheint, angetroffen zu werden, wenn es eine Instanz des laufenden EXCEL.EXE Prozesses ist.

War es hilfreich?

Lösung

Wenn Sie Runtime-Fehler 91 zu erhalten, können Sie darauf wetten, es gibt ein nicht initialisierte Objekt irgendwo in der Erklärung. Mit anderen Worten, versuchen Sie, die Eigenschaften oder Methoden einer Variable / Objekt mit einem Wert von Nichts zu verwenden.

In Ihren Beispielen oleXl, oleXlFx und OleExcel sind wahrscheinlich nichts. Also, wenn Sie in ihrem .object Eigenschaft beziehen, lösen Sie die RTE.

Irgendwo in Ihrem Code haben diese Variablen zu etwas initialisiert werden. Geben Sie für Aussagen wie Set oleXl = CreateObject("Excel.Application") oder Set oleXl = New Excel.Application

Ein Vorschlag; wenn Sie die Aussagen finden, die diese OLE-Objekte tatsächlich initialisieren, um zu sehen, wie sich die Fehlerbehandlung codiert. Wenn Sie sehen, Dinge wie diese:

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

fügen Sie einen Test, um sicherzustellen, das Objekt instanziiert wurde

On Error Resume Next
Set oleXl = CreateObject(...
If oleXl Is Nothing Then
   MsgBox "Hey, my object is Nothing!"
End If

Andere Tipps

Microsoft schlägt vor, dass wir beheben können Fehler 91 durch einen neuen Registrierungsschlüssel zu erstellen. So erstellen Sie einen neuen Schlüssel unter den Schritten folgen.

  • Klicken Sie auf das Windows-Startmenü
  • Typ Regedit in das Suchfeld
  • Drücken Sie die Eingabetaste
  • Suchen Sie den folgenden Eintrag in der Registrierung. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server
  • Wählen Sie nun den Transaktionsserver und die rechte Maustaste auf dem
  • Wählen Sie Neu und wählen Sie dann Taste
  • Nennen Sie den Schlüssel als Debug
  • Rechtsklick auf die Debug-Taste und wählen Sie Neu
  • Jetzt Key auswählen und den Schlüssel als RunWithoutContext Namen

Ref: http://backspacetab.com/error-91/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top