vba script stoppen bij issue, maar hoe/wanneer?

Status
Niet open voor verdere reacties.

arjoderoon

Gebruiker
Lid geworden
2 mei 2007
Berichten
474
Voor een aantal templates heb ik onderstaande basis routine:
Code:
Sub vernieuwalles(mytemplate As String)
  
  Windows(mytemplate).Activate
    
  On Error GoTo Err_
  
  Application.StatusBar = "Bezig met vernieuwen"

  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  
'  Call SheetOpschonen
  
  Call datawissen
  Call dataplaatsen
  Call kolomtitels
  Call toevoegen
  Call maaktabel
  Call refreshpivots

Exit_:
  Application.StatusBar = ""
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
  Exit Sub
  
Err_:
  Call MsgBox(Err.Number & vbCrLf & Err.Description)
  Resume Exit_
  
Application.Calculation = xlCalculationAutomatic
  
End Sub

Als alles gewoon goed gaat, dan werkt dit uitstekend.

Maar ik heb nu gemerkt dat het eerste element (zit niet in deze routine maar in iedere afzonderlijke template) fout kan lopen waardoor er geen data gegenereerd wordt en de data uitdraaien leeg blijven. In dat geval gaat de routine "data plaatsen" niet goed en krijg ik een foutmelding dat het bereik niet gekopieerd kan worden (vanaf 6 verschillende 6 worksheets wordt alles op 1 worksheet gezet).
Code:
Sub dataplaatsen()
Dim sheetnames As Variant
Dim i As Integer

  sheetnames = Array("food-drug", "food-drug (2)", "aswatson", "aswatson (2)", "food", "food (2)")

  For i = LBound(sheetnames) To UBound(sheetnames)
    With Sheets(sheetnames(i))
      aantalrijen = .Range("A1", .Range("A1").End(xlDown)).Cells.Count - 1
      .Range(.Cells(2, "A"), .Cells(aantalrijen, "R")).Copy _
        Sheets(SheetSchaduwblad).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    End With
  Next i

End Sub

Deze routine ("data plaatsen") loopt echter pas nadat "data wissen" geweest is. En zodra ik mijn data gewist heb, is mijn bron blad waar de data vanaf de 6 worksheets terecht komt en die fungeert als bron van talloze draaitabellen leeg.

Aan het eind van de routine staat nog de "refresh pivots". Deze vernieuwd alle draaitabellen in het document. Maar als mijn bronblad leeg is, is het resultaat dat de structuur van mijn draaitabellen aangetast wordt en ik ze dus allemaal handmatig kan gaan maken.

Daar zit ik niet op te wachten. daarom zou ik er een check tussen willen hebben.

Op basis van de error routine zou ik denken dat hij nooit bij "refresh pivots" uit kan komen als er een foutmelding optreedt.

Klopt dat?

En vraag 2:
Hoe kan ik ervoor zorgen dat er pivots ververst gaan worden als het verversen van de data queries niet goed gegaan is en er blijkbaar geen data is? Kan ik het script ook een check uit laten voeren voor het kopiëren en een melding geven als dit niet kan voordat er zaken gewist worden?
 
Laatst bewerkt:
Code:
Sub M_dataplaatsen()
  For each it in Array("food-drug", "food-drug (2)", "aswatson", "aswatson (2)", "food", "food (2)")
    Sheets(it).cells(1).currentregion.resize(,18).copy Sheets("SheetSchaduwblad").Cells(Rows.Count, 1).End(xlUp).Offset(1)
  Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan