Freigeben über


Document.BeginUndoScope-Methode (Visio)

Startet eine Transaktion mit einer eindeutigen Bereichs-ID für eine Instanz von Microsoft Visio.

Syntax

Ausdruck. BeginUndoScope (bstrUndoScopeName)

Ausdruck Eine Variable, die ein Document-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
bstrUndoScopeName Erforderlich String Der Name des Bereichs, kann auf der Visio-Benutzeroberfläche angezeigt werden.

Rückgabewert

Long

Hinweise

Wenn Sie wissen müssen, ob empfangene Ereignisse das Ergebnis eines bestimmten von Ihnen initiierten Vorgangs sind, verwenden Sie die Methoden BeginUndoScope und EndUndoScope, um den Vorgang einzuschließen. Verwenden Sie im Ereignishandler die IsInScope-Eigenschaft, um zu testen, ob die von der BeginUndoScope-Methode zurückgegebene Bereichs-ID Bestandteil des aktuellen Kontexts ist. Stellen Sie sicher, dass Sie die gespeicherte Bereichs-ID aus der BeginUndoScope-Eigenschaft löschen, wenn Sie das ExitScope-Ereignis mit der ID empfangen.

Sie müssen Aufrufe der BeginUndoScope-Methode mit Aufrufen der EndUndoScope-Methode ausgleichen. Wenn Sie die BeginUndoScope-Methode aufrufen, sollten Sie die EndUndoScope-Methode aufrufen, sobald Sie die Aktionen abgeschlossen haben, die den Bereich bilden. Obwohl Aktionen für mehrere Dokumente in einem Bereich stabil sein sollten, kann das Schließen eines Dokuments den Nebeneffekt haben, dass die Rückgängig-Informationen für den derzeit geöffneten Bereich sowie die Rückgängig- und Wiederholen-Stapel gelöscht werden. In diesem Fall werden durch die Übergabe von bCommit = False an EndUndoScope die Rückgängig-Informationen nicht wiederhergestellt.

Sie können die Methoden BeginUndoScope und EndUndoScope auch verwenden, um dem Rückgängig-Datenstrom von Visio eine von einem Add-On definierte Aktion hinzuzufügen. Dies ist nützlich, wenn Sie in Szenarios ohne Modus arbeiten, in denen der initiierende Agent Bestandteil der Benutzeroberfläche eines Add-Ons oder einer programmgesteuerten Aktion ohne Modus ist.

Hinweis

Die meisten Visio-Aktionen sind bereits in interne Rückgängig-Bereiche eingeschlossen, sodass Add-Ons, die innerhalb der Anwendung ausgeführt werden, diese Methode nicht aufrufen müssen.

Beispiel

Mit diesem Beispiel wird gezeigt, wie die BeginUndoScope-Methode verwendet wird, um eine Transaktion zu starten, die eine eindeutige Bereichs-ID für eine Instanz von Visio aufweist.

 
Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID As Long 
 
Public Sub BeginUndoScope_Example() 
 
 Dim vsoShape As Visio.Shape 
 
 'Set the module-level application variable to 
 'trap application-level events. 
 Set vsoApplication = Application 
 
 'Begin a scope and set the module-level scope ID variable. 
 lngScopeID = Application.BeginUndoScope("Draw Shapes") 
 
 'Draw three shapes. 
 Set vsoShape = ActivePage.DrawRectangle(1, 2, 2, 1) 
 ActivePage.DrawOval 3, 4, 4, 3 
 ActivePage.DrawLine 4, 5, 5, 4 
 
 'Change a cell to trigger the CellChanged event. 
 vsoShape.Cells("Width").Formula = 5 
 
 'End and commit this scope. 
 Application.EndUndoScope lngScopeID, True 
 
 End Sub 
 
 Private Sub vsoApplication_CellChanged(ByVal Cell As IVCell) 
 
 'Check to see if this cell change is the result of something 
 'happening within the scope. 
 If vsoApplication.IsInScope(lngScopeID) Then 
 Debug.Print Cell.Name & " changed in scope "; lngScopeID 
 End If 
 
End Sub 
 
Private Sub vsoApplication_EnterScope(ByVal app As IVApplication, _ 
 ByVal nScopeID As Long, _ 
 ByVal bstrDescription As String) 
 
 If vsoApplication.CurrentScope = lngScopeID Then 
 Debug.Print "Entering my scope " & nScopeID 
 Else 
 Debug.Print "Enter Scope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub 
 
Private Sub vsoApplication_ExitScope(ByVal app As IVApplication, _ 
 ByVal nScopeID As Long, _ 
 ByVal bstrDescription As String, _ 
 ByVal bErrOrCancelled As Boolean) 
 
 If vsoApplication.CurrentScope = lngScopeID Then 
 Debug.Print "Exiting my scope " & nScopeID 
 Else 
 Debug.Print "Exit Scope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.