in einer Worksheet "eingefangen"

12/05/2009 - 15:44 von Hervé RICHARD | Report spam
Hallo NGs,

wenn ich ein Worksheet verlasse, sollten die darin stehenden Pivot Tabellen
gelöscht werden, und anschliessend alle Zellen noch mal gelehrt werden (ich
habe nàmlich User die Formeln reinbasteln, sie dann nicht löschen und zum
Schluss Verweise stehen lassen auf PTs die es nicht mehr gibt).

So sieht es bei der Schliessung aus:

Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Delete_PivotTables_SavingsReporting
Application.ScreenUpdating = True
End Sub
==>
Sub Delete_PivotTables_SF_SavingsReporting()
Dim PT As PivotTable
... 'hier werden die PTs gelöscht, und das klappt anstandslos
Clear_Worksheet_Columns "Savings_SF_Reporting", "A", "AZ"
End Sub
==>
Sub Clear_Worksheet_Columns(strWorksheet As String,
strColumnFrom As String, Optional strColumnTo As String)
Dim rngZelle As Range
Application.EnableEvents = False
If IsMissing(strColumnTo) Then strColumnTo = strColumnFrom
ThisWorkbook.Worksheets(strWorksheet).Activate
For Each rngZelle In Range(strColumnFrom & "2:" &
strColumnTo & "2")
Cells(rngZelle.Row, rngZelle.Column).EntireColumn.Clear
Next rngZelle
Application.EnableEvents = True
End Sub

nun, alles funktioniert, aber ich komme aus dem Worksheet nicht mehr raus,
als ob ich spezifisch einen .Activate auf ihn platziert hàtte.
Also "ein mal drin, immer drin" so zu sagen.

Warum komme ich nicht mehr aus meinem Worksheet raus? was soll ich da tun?

Danke im Voraus für die Unterstützung.
 

Lesen sie die antworten

#1 Andreas Killer
12/05/2009 - 16:10 | Warnen spam
Hervé RICHARD schrieb:

Private Sub Worksheet_Deactivate()


...
ThisWorkbook.Worksheets(strWorksheet).Activate


...
als ob ich spezifisch einen .Activate auf ihn platziert hàtte.


Naja, hast Du ja auch, kuck da oben steht's.

Du kannst nicht in einem Ereignis das ein Sheet deaktiviert dieses
(oder ein anderes) aktivieren, denn nach dem Deactivate-Ereignis kommt
immer das Activate eines anderen Sheet von Excel selber.

Nimm's raus und schreib deinen Code um:

with Sheets(strWorksheet)
For Each rngZelle In .Range( _
strColumnFrom & "2:" & strColumnTo & "2")
etc.
end with

Andreas.

Ähnliche fragen