Wenn Sie eine Visual Basic für Applikationen-Makro, verwenden um eine Formel in einem Microsoft Excel-Arbeitsblatt zu aktualisieren, kann das WorkbookBeforeClose-Ereignis ausgelöst.
Microsoft hat dies ein Problem in Microsoft Excel 97 für Windows bestätigt. Dieses Problem wurde in Microsoft Office 97 Service Release 2 (SR-2) behoben.
Erstellen des Ereignishandlers WorkbookBeforeClose
Starten Sie Excel.
Wenn Sie persönliche Makroarbeitsmappe (Personal.xls) nicht haben, veranschaulichen die folgenden Schritte erstellen. Fahren Sie mit Schritt 3 fort, wenn Sie bereits persönliche Makroarbeitsmappe verfügen.
Im Menü Extras auf Makro, und klicken Sie dann auf aufzeichnen.
Klicken Sie in das Feld im auf Persönliche Makro-Arbeitsmappe, und klicken Sie dann auf OK.
Im Menü Extras auf Makro, und klicken Sie dann auf Aufzeichnung beenden.
Drücken Sie [Alt]+[F11], um den Visual Basic-Editor zu starten.
Drücken Sie STRG + R, um im Explorer Projekt aktivieren.
Klicken Sie im Projektexplorer-Fenster auf "VBAProject (Personal.xls)."
Klicken Sie im einfügen auf Klassenmodul um ein Klassenmodul einzufügen.
Geben Sie den folgenden Code in das Klassenmodul:
Public WithEvents App As Application
Private Sub App_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, _
Cancel As Boolean)
MsgBox "App_WorkbookBeforeClose"
End Sub
Doppelklicken Sie im Projektexplorer von Visual Basic-Editor im aktuellen Projekt auf ThisWorkbook.
Geben Sie in das ThisWorkbook Modulblatt den folgenden Code:
Dim X As New Class1
Private Sub Workbook_Open()
Set X.App = Application
End Sub
Klicken Sie im Menü Einfügen auf Modul, um ein Visual Basic-Modulblatt einzufügen.
Geben Sie in das Modulblatt den folgenden Code:
Sub Test_BeforeClose()
Dim xFormula As String, i As Integer, j As Integer
Windows("Worksheet in BeforeCloseTest.Doc").Activate
i = Workbooks("Worksheet in BeforeCloseTest.Doc 2") _
.Worksheets("Sheet1").Range("A100").End(xlUp).Row + 1
Range("A1").Name = "RefCopy" & I
Range("A1").Copy
Windows("Worksheet in BeforeCloseTest.Doc 2").Activate
Range("A" & i).Select
ActiveSheet.Paste Link:=True
xFormula = ActiveCell.Formula
For j = Len(xFormula) To 1 Step -1
If Mid(xFormula, j, 1) = "!" Then Exit For
Next j
ActiveCell.Formula = Left(xFormula, j) & "RefCopy" & i & "'"
End Sub
Klicken Sie im Menü Datei auf "Schließen & zurückkehren zu Microsoft Excel".
Klicken Sie im Menü Datei auf Beenden. Klicken Sie auf Ja, wenn Sie aufgefordert werden, um die Änderungen in der persönlichen Makro-Arbeitsmappe zu speichern.
Klicken Sie mit der rechten Maustaste auf das erste eingebettete Excel-Objekt, zeigen Sie auf Arbeitsblatt-Objekt im Kontextmenü auf, und klicken Sie dann auf Öffnen.
Aktivieren Sie Word.
Klicken Sie mit der rechten Maustaste auf das zweite eingebettete Excel-Objekt, zeigen Sie auf Arbeitsblatt-Objekt im Kontextmenü auf, und klicken Sie dann auf Öffnen.
Zeigen Sie im Menü Extras auf Makro, und klicken Sie auf Makros. Klicken Sie auf Personal.xls!Test_BeforeClose, und klicken Sie auf Ausführen.
OLE-Verknüpfung ist zwischen Arbeitsmappe von Zelle A1 der "Tabelle in BeforeCloseTest.doc" und Zelle A2 der Arbeitsmappe "Arbeitsblatt in BeforeCloseTest.doc 2" erstellt.
Aktivieren Sie die Arbeitsmappe "Tabelle in BeforeCloseTest.doc".
Geben Sie test in Zelle A1 ein.
Zeigen Sie im Menü Extras auf Makro, und klicken Sie auf Makros. Klicken Sie auf Personal.xls!Test_BeforeClose, und klicken Sie auf Ausführen.
Ein Meldungsfeld wird angezeigt, der angibt, dass das WorkbookBeforeClose-Ereignis ausgelöst hat. Das WorkbookBeforeClose-Ereignis wird jedes Mal ausgelöst, wenn Sie die Test_BeforeClose-Prozedur ausführen.
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 176251
(http://support.microsoft.com/kb/176251/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Hat dieser Artikel bei der Lösung Ihres Problems geholfen?
Ja
Nein
Ich weiß nicht
Waren die Informationen für Ihr Problem relevant?
Ja
Nein
Wie könnte man den Artikelinhalt verbessern?
Hinweis: Leider können wir keine Kommentare persönlich beantworten.
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.