arjoderoon
Gebruiker
- Lid geworden
- 2 mei 2007
- Berichten
- 474
Voor een aantal templates heb ik onderstaande basis routine:
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).
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?
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: