Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

On Error Behandlung schlägt fehl

Betrifft: On Error Behandlung schlägt fehl von: haze
Geschrieben am: 05.02.2020 17:03:30

Hallo zusammen,


die letzte halbe Stunde habe ich mich mit nichts anderem befasst und leider keine Lösung im Netz gefunden, die funktioniert.


Nachfolgender Code scheitert an der "GoError Resume Next" Passage und ich verstehe nicht, _
weshalb die Aussetzung der Fehlermeldung nicht funktioniert:


Sub Refresh()
Dim Monatseingabe As Integer
On Error Resume Next

'## Dateien aktualisieren

Sheets("Database").Select
    Sheets("Database").Range("A2").Select '/Datenverbindung Power Query aktualisieren
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    
    For Each Pvts In ActiveWorkbook.PivotCaches '/ konkreter Befehler zur Pivot Aktualisierung
    Pvts.Refresh
  Next

'## Abfrage, um welchen Monat es sich handelt

Monatseingabe = InputBox("Bitte Monat des Berichts angeben:") '/Abfrage des Berechnungsmonats fü _
 _
 _
 _
r weitere Berechnungen

If Monatseingabe = "1" Then
       On Error Resume Next
       ActiveSheet.PivotTables("CCReport").PivotFields("FC").Caption = "Trend" 'Pivot Spalte  _
umbenennen
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Januar"   'Act. Month
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Januar"   'YTD cum.
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Invoices.01.01.2019"   'PY YTD cum.
       ActiveSheet.PivotTables("CCReport").CalculatedFields("VS").StandardFormula = "=Januar*12" _
 _
 _
 _
   'Trend
    
    Else
    
    If Monatseingabe = "2" Then
    On Error Resume Next
       ActiveSheet.PivotTables("CCReport").PivotFields("FC").Caption = "Trend" 'Pivot Spalte  _
umbenennen
    On Error GoTo 0
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Februar"   'Act. Month
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Januar+Februar"   'YTD cum.
       ActiveSheet.PivotTables("CCReport").CalculatedFields("act. Month").StandardFormula = "=   _
 _
_
_
Invoices.01.01.2019+Invoices.01.02.2019"   'PY YTD cum.
       ActiveSheet.PivotTables("CCReport").CalculatedFields("VS").StandardFormula = "=((Januar+  _
 _
 _
_
Februar)/2)*12"   'Trend

        Else
        
        End If

    End If
End Sub


Das Pivot Feld "Trend" soll nur in den ersten 3 Monaten "Trend" heißen, für alle anderen würde ich hier die Spalte in "FC" benennen, daher der Code. Ab Monat 4 ändert sich dann auch die Berechnung, was aber unkritisch sein dürfte.


Nun erscheint (trotz der "On Error" Behandlung) der Laufzeitfehler 1004. Wie lässt sich der abschalten bzw. der Code bei Fehler einfach überspringen?


Es handelt sich bestimmt um ein gängiges Problem, unter der Suchfunktion kommt bei "On error" leider kein Eintrag...


Besten Dank für eure Hilfe und viele Grüße

haze

Betrifft: AW: On Error Behandlung schlägt fehl
von: ChrisL
Geschrieben am: 05.02.2020 19:02:00

Hi

Vielleicht kannst du das Feld mit dem entsprechenden Index ansprechen, dann brauchst du On Error generell nicht.
PivotFields(1)
Falls der Index dynamisch ist, könnte man es so lösen:
With Worksheets("sheet3").PivotTables(1) 
 For i = 1 To .PivotFields.Count 
   If .PivotFields(i).Name = "FC" Then 
      .PivotFields(i).Name = "Trend"
      Exit For
   End If
 Next 
End With

https://docs.microsoft.com/en-us/office/vba/api/excel.pivotfields


Falls du weiter optimieren möchtest, hier zwei kürzlich erstellte Beiträge. Etwas andere Ausgangslage, aber das Grundproblem bleibt.

Einerseits "Referenzierung" (With-Rahmen setzen und Select/ActiveSheet ersetzen)
https://www.herber.de/forum/messages/1738468.html

Andererseits "Select-Case" als Alternative zur If-Then Verschachtelung (macht es deutlich übersichtlicher)
https://www.herber.de/forum/messages/1738422.html


cu
Chris

Betrifft: AW: On Error Behandlung schlägt fehl
von: haze
Geschrieben am: 06.02.2020 08:23:12

Hi Chris,

vielen lieben Dank für die Antwort.

Tatsächlich wird sich an der Struktur der Pivot nichts ändern (gerade deshalb ja der Wechsel der Überschriften per VBA). Insofern ist dein Vorschlag der sinnvollste Lösungsansatz - tausend Dank!

Ich probiere es gleich mal aus, zur Not melde ich mich wieder.

Beste Grüße
haze