Hilfe zu EnableEvents!!!



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Hilfe zu EnableEvents!!!
von: Jeanne
Geschrieben am: 14.05.2002 - 09:49:40

Guten Morgen Alle zusammen!

Ich habe folgendes Problem:
In mehreren Tabellen habe ich unter dem Worksheet_Calculate Ereignis den gleichen Code. Wenn ich zB. in Tabelle 1 den Autofilter aktiviere, soll dies auch in den anderen Tabellen passieren. Ich habe es mit EnableEvents = False ausprobiert, dies klappt aber nur beim ersten mal (auch wenn ich EnableEvents wieder auf True setzten).
Gibt es noch eine andere Möglichkeit? Hat vielleicht jemand eine Idee, wie ich das mit dem Autofilter sonst hinkriege? Bin schon ganzschön am verzweifeln.

Bis denne
Jeanne

nach oben   nach unten

Re: Hilfe zu EnableEvents!!!
von: Christoph Dümmen
Geschrieben am: 14.05.2002 - 09:56:40

Hallo Jeanne,

EnableEvents aktiviert oder deaktiviert die Ereignisse von Excel. Damit kommst Du also nicht so weit.

For each w in Worksheets
Autofilteraktion
next w

wird Dich sicherlich weiter bringen.
Christoph

Bei Bedarf poste doch bitte Deinen Code.


nach oben   nach unten

Re: Hilfe zu EnableEvents!!!
von: Jeanne
Geschrieben am: 14.05.2002 - 10:17:14

Hallo Christoph,

werde ich gleich mal ausprobieren.
Mein Code sieht wie folgt aus und befindet sich in einem Standardmodul. Ich rufe es in dem Calculate Ereignis nur noch auf.

Sub AlleFiltern()
Dim TB As Worksheet
Dim lstMonate(), Monat As String, wksAktive As Worksheet
Dim i As Integer, j As Integer, k As Integer
Dim intF As Integer

Application.DisplayAlerts = False

Set wksAktive = ActiveSheet

k = 0
'Monate (Tabellen) auslesen, ausser die aktive
For i = 1 To Sheets.Count
For j = 1 To 12
If InStr(Sheets(i).Name, Format(DateValue("1." & j & ".2002"), "MMMM")) > 0 And _
Sheets(i).Name <> wksAktive.Name Then
ReDim Preserve lstMonate(k)
lstMonate(k) = Sheets(i).Name
k = k + 1
End If
Next
Next

'hier wird in jeder anderen Tabelle der Autofilter gesetzt
For i = 0 To UBound(lstMonate)
Monat = lstMonate(i)
For intF = 1 To wksAktive.Autofilter.Filters.Count
Select Case intF
Case 1 To 5
'Application.EnableEvents = False
If wksAktive.Autofilter.Filters(intF).On = True Then
Worksheets(Monat).Range("A5:S5").Autofilter Field:=intF, _
Criteria1:=wksAktive.Autofilter.Filters(intF).Criteria1 ', Operator:=xlAnd
'Application.EnableEvents = True
Else
Worksheets(Monat).Range("A5:S5").Autofilter Field:=intF
'Application.EnableEvents = True
End If
End Select
Next intF
Next i
Application.DisplayAlerts = True
End Sub


Hoffe du kannst damit was anfangen!

Gruß Jeanne

nach oben   nach unten

Re: Hilfe zu EnableEvents!!!
von: Christoph Dümmen
Geschrieben am: 14.05.2002 - 10:36:25

Hallo Jeanne,

vielleicht schaust Du ja zwischendurch noch mal ins Forum, während Du probierst:
Das Problem liegt tatsächlich in dem zweiten Teil des Codes, in welchem Du nicht durch die Blätter 'läuftst'.

dim sh as worksheet
For i = 0 To UBound(lstMonate)
set sh = worksheets(lstMonate(i))


Viel Vergnügen
Christoph

nach oben   nach unten

Re: Hilfe zu EnableEvents!!!
von: Jeanne
Geschrieben am: 14.05.2002 - 11:47:30

Hallöchen Christoph,

es klappt nicht so wie es soll! Jedesmal wenn er den Filter setzten will, springt er automatisch wieder an den Anfang der Calculate Prozedur. Was mache ich falsch?

Gruß Jeanne


nach oben   nach unten

Re: Hilfe zu EnableEvents!!!
von: Christoph Dümmen
Geschrieben am: 14.05.2002 - 12:58:29

Hallo,
dann stelle den Code so, wie er jetzt ist ins Forum.
Christoph

nach oben   nach unten

Re: Calculate hört nicht auf!!!
von: Jeanne
Geschrieben am: 14.05.2002 - 13:47:03

Hallöchen Christoph,

danke, das du dir so viel Mühe mit mir gibts!!!

Nachfolgend der Code:

Private Sub Worksheet_Calculate()
Dim lstMonate(), strKriteria as String
Dim wksFiltern , wksAktive As Worksheet
Dim i As Integer, j As Integer, k As Integer
Dim intF As Integer

Application.DisplayAlerts = False

Set wksAktive = ActiveSheet

k = 0
'Monate (Tabellen) auslesen
For i = 1 To Sheets.Count
For j = 1 To 12
If InStr(Sheets(i).Name, Format(DateValue("1." & j & ".2002"), "MMMM")) > 0 And _
Sheets(i).Name <> wksAktive.Name Then
ReDim Preserve lstMonate(k)
lstMonate(k) = Sheets(i).Name
k = k + 1
End If
Next
Next

For i = 0 To UBound(lstMonate)
Set wksFiltern = Worksheets(lstMonate(i))
For intF = 1 To wksAktive.Autofilter.Filters.Count
Select Case intF
Case 1 To 5
If wksAktive.Autofilter.Filters(intF).On = True Then
strKriteria = wksAktive.Autofilter.Filters(intF).Criteria1

'Bis hier ist alles OK, sobald er den Filter setzten will, lande ich wieder am Anfang

Worksheets(Monat).Range("A5:S5").Autofilter Field:=intF, Criteria1:=strKriteria
Else
Worksheets(Monat).Range("A5:S5").Autofilter Field:=intF
End If
End Select
Next intF
Next i
Application.DisplayAlerts = True
End Sub

Vielleicht sieht du ja den Fehler, mit fällt nichts mehr ein.

Bis denne Jeanne

nach oben   nach unten

Re: Der Code war falsch, jetzt der richtige!!!
von: Jeanne
Geschrieben am: 14.05.2002 - 13:55:01

Also nochmal!!!

Private Sub Worksheet_Calculate()
Dim lstMonate(), strKriteria as String
Dim wksFiltern , wksAktive As Worksheet
Dim i As Integer, j As Integer, k As Integer
Dim intF As Integer

Application.DisplayAlerts = False

Set wksAktive = ActiveSheet

k = 0
'Monate (Tabellen) auslesen
For i = 1 To Sheets.Count
For j = 1 To 12
If InStr(Sheets(i).Name, Format(DateValue("1." & j & ".2002"), "MMMM")) > 0 And _
Sheets(i).Name <> wksAktive.Name Then
ReDim Preserve lstMonate(k)
lstMonate(k) = Sheets(i).Name
k = k + 1
End If
Next
Next

For i = 0 To UBound(lstMonate)
Set wksFiltern = Worksheets(lstMonate(i))
For intF = 1 To wksAktive.Autofilter.Filters.Count
Select Case intF
Case 1 To 5
If wksAktive.Autofilter.Filters(intF).On = True Then
strKriteria = wksAktive.Autofilter.Filters(intF).Criteria1

'Bis hier ist alles OK, sobald er den Filter setzten will, lande ich wieder am Anfang

wksFiltern.Range("A5:S5").Autofilter Field:=intF, Criteria1:=strKriteria
Else
wksFiltern.Range("A5:S5").Autofilter Field:=intF
End If
End Select
Next intF
Next i
Application.DisplayAlerts = True
End Sub

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Bildschirmschoner im Regedit ausschalten"