Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife im Refresh-Makro

Schleife im Refresh-Makro
06.05.2013 14:35:39
Nik
Hallo zusammen,
ich habe folgendes Makro zum Pivot refreshen, was auch ganz gut funktioniert:
----------------------------------------
Sub RefreshPivot()
Dim p As PivotTable
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each p In ws.PivotTables
p.RefreshTable
p.PivotFields("M&Y").ClearAllFilters
p.PivotFields("M&Y").PivotFilters.Add _
Type:=xlDateBetween, Value1:="01.09.2011", Value2:="01.01.2013"
Next
Next
End Sub

-------------------------------------------------
Allerdings habe ich jetzt ein Worksheet das mir ein Fehler generiert, da eben dort keine Zeitperiode integriert ist. Wie ändere ich das Makro am besten an, so dass es bei Fehler diese einfach ignoriert und trotzdem weiter macht?
Vielen lieben Dank und Gruss
Nik

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
on error resume next
06.05.2013 14:47:53
Klaus
Hallo Nik,
du fragst:
dass es bei Fehler diese einfach ignoriert und trotzdem weiter macht
Die Antwort:
schreibe in die erste Zeile des Makros folgendes Kommando:
on error resume next
damit werden Fehler im Makro ignoriert, es geht einfach mit der nächsten Zeile weiter.
Dass eine solche brutale Methode gerne mehr Probleme nach sich zieht als sie löst, und man Fehler lieber abfangen als ignorieren sollte, könnte ich dir auch alles sagen: aber das hast du nicht gefragt.
Grüße,
Klaus M.vdT.

AW: Schleife im Refresh-Makro
06.05.2013 14:51:51
UweD
Hallo
evtl mit error behandlung

' bei Error gehe zur nächsten Anweisung
On Error Resume Next
p.PivotFields("M&Y").PivotFilters.Add _
Type:=xlDateBetween, Value1:="01.09.2011", Value2:="01.01.2013"
'wieder auf standard schalten
On Error GoTo 0
Ungetestet!
Gruß UweD

Anzeige
AW: Schleife im Refresh-Makro
06.05.2013 15:04:15
UweD
Hallo nochmal
wenn es immer die gleiche Tabelle ist dann evtl. so

For Each ws In ActiveWorkbook.Worksheets
If ws.Name  "DiesesNicht" Then
For Each p In ws.PivotTables
p.RefreshTable
p.PivotFields("M&Y").ClearAllFilters
p.PivotFields("M&Y").PivotFilters.Add _
Type:=xlDateBetween, Value1:="01.09.2011", Value2:="01.01.2013"
Next
End If
Next

AW: Schleife im Refresh-Makro
06.05.2013 16:12:12
Nik
Hallo zusammen..
es ist in der Tat eigentlich nur die eine Pivot in einem bestimmten Sheet. Wobei ich aber auch nicht ausschliessen möchte dass vielleicht in Zukunft noch die eine oder andere Pivot dazukommt in meinem "Cockpit", die die gleichen Eigenschaften, sprich keine Zeitdimension aufweist.
@ Klaus: Du hast geschrieben, abfangen wäre besser. Wie meinst Du das? Einfach um ein wenig dazuzulernen :-)
Vielen lieben Dank und Gruss
Nik

Anzeige
AW: Schleife im Refresh-Makro
07.05.2013 08:20:47
Klaus
Hallo Nik,
@ Klaus: Du hast geschrieben, abfangen wäre besser. Wie meinst Du das?
Im Grunde genau so, wie UweD schrieb:
Wenn du weisst, dass die Tabelle "DieseNicht" einen Fehler verursacht, schließe sie aus.
If ws.Name "DiesesNicht" Then ...
Auf diese Art solltest du jeden Fehler ausschließen. "On Error Resume Next" bewirkt halt, dass du eventuelle neue Fehler nicht mehr bemerktst (das Makro läuft ja) und im schlimmsten Fall bekommst du falsche Ergebnisse.
Am besten wäre natürlich eine ausführliche Fehlerbehandlung mit "On Error goto ErrHndl", aber das würde hier den Rahmen sprengen. Bei deinem Mini-Code ist das auch eher eine akademische Überlegung, obwohl einige Puristen jetzt (zurecht!) einwenden können, dass selbst für einen 1-Zeilen-Code eine 20-Zeilen Fehlerbehandlung ihre Daseinsberechtigung hat.
Zur Einführung in das Thema könntest du eins von Peter Haserodts gewohnt großartigen Tutorials lesen:
http://www.online-excel.de/excel/singsel_vba.php?f=144
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige