• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Conflict tussen 2 macro's

Status
Niet open voor verdere reacties.

DaviddeV1990

Gebruiker
Lid geworden
30 jul 2011
Berichten
61
Ik zit met een conflict tussen twee verschillende macro's waar ik niet uit kom. Allereerst heb ik onderstaande macro. Deze macro zorgt er voor dat PivotTables die op een andere locatie staan worden gekopieerd naar de door mij opgegeven worksheets. Met deze macro is niks mis, deze staat hier dus alleen ter informatie.

Code:
Sub CopyPvts()
Dim ws As Worksheet
Dim wb As Workbook
Dim SheetList
Dim i As Long
SheetList = Array("AfprPerFilPerSubgrpPerArtGELD", "AfprPerFilPerSubgrpPerArtCE") ' change to suit - these are the sheet names to copy TO and must exist
Set wb = Workbooks.Open("C:\Users\David\Documents\PivotTables.xlsx") ' change to suit
For Each ws In Worksheets(Array("AfprPerFilPerSubgrpPerArtGELD", "AfprPerFilPerSubgrpPerArtCE")) ' change to suit = sheet names to copy FROM
ThisWorkbook.Sheets(SheetList(i)).UsedRange.ClearContents
ws.UsedRange.Copy Destination:=ThisWorkbook.Sheets(SheetList(i)).Range("A1")
i = i + 1
Next ws
wb.Close savechanges:=False
End Sub

Vervolgens gebruik ik een macro (zie onderstaand) om in twee pivottables een "Winkel afdeling" te kiezen die in sheet Admin in B136 staat. Dit werkt opzich goed. Echter, de eerste macro wordt uitgevoerd als het bestand wordt geopend. De pivottables heten in eerste instantie "Draaitabel1" en "Draaitabel2". Als de eerste macro opnieuw wordt uitgevoerd, dan krijgen de pivottables respectievelijk de namen "Draaitabel3" en "Draaitabel4". En als ik 'm nog een keer uitvoer dan "Draaitabel5" en "Draaitabel6" etc. In de tweede macro wordt echter continue uitgegaan van "Draaitabel1" en "Draaitabel2". Hoe is dit aan te passen zodat bij macro twee steeds de goede pivottables worden gepakt?

NB. Mocht dit van belang zijn, het PivotField wat moet worden aangepast ("Winkel afdeling") staat bij beide pivottables altijd in cel B4.

Code:
Sub PVTAfdelingKiezen()
'
' PVTAfdelingKiezen Macro
'

'
Sheets("AfprPerFilPerSubgrpPerArtCE").Select
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Winkel afdeling"). _
        CurrentPage = Sheets("Admin").Range("B136").Text
    Sheets("AfprPerFilPerSubgrpPerArtGELD").Select
    ActiveSheet.PivotTables("Draaitabel2").PivotFields("Winkel afdeling"). _
        CurrentPage = Sheets("Admin").Range("B136").Text
    Sheets("AGF").Select
    Range("M32").Select
        
End Sub

Wie kan mij hiermee helpen? Hartelijk dank!
 
Laatst bewerkt:
Jou eerste macro kopieert geen draaitabellen, maar sheets waar (toevallig) een draaitabel op staat, omdat excel geen instructies krijgt maakt deze zelf een naam en dat gaat volgens de logica van doornummeren Draaitabel1, Draaitabel5 zoals je ook beschrijft.

tijdens het kopieren in macro 1 zul je dus ook de naam van de draaitabel moeten aanroepen en wijzigen. dit deed ik met de macro recorder en die gaf deze regel,

Code:
   ActiveSheet.PivotTables("Draaitabel1").Name = "MyPivotName"

Op basis van alleen de code weet ik niet wat het exact moet worden, ik denk dat activesheet eerder iets van sheets(sheetlist(i)) moet worden, misschien moet je voor het kopieren al de draaitabel van naam veranderen zodat je exact weet wat de uitkomst is na kopieren. dat zal spelen zijn. (of wachten tot iemand met meer VBA kennis komt die de juiste code zo uitbraakt)

in de 2e macro moet je dan dus ook die MyPivotName zetten ipv draaitabel1 maar verder wijzigt die macro niet denk ik.
 
Ik kan de naam van de pivottables op de locatie zelf niet wijzigen. Ik kan ook de pivottable niet kopieren, dus vandaar dat ik de hele sheet kopieer, want zo kopieer ik ook de pivottables. Is er iemand die (zoals RoelJongman het zegt) een code hiervoor kan uitbraken zodat de naam van de PivotTable altijd hetzelfde is?

Daarnaast heeft iemand misschien ook een andere oplossing die niks in de macro's aanpast. Het veld van de pivottables wat gewijzigd moet worden is altijd B4. Een ideale oplossing zou dus zijn dat je in B4 iets zet van "=Sheet1!A1" en dan in A1 invult "AGF" zodat ook B4 wijzigt naar "AGF". Ik krijg alleen de melding dat het niet mogelijk is om een formule in een veldnaam van een PivotTable te zetten. Maar is dit misschien te omzeilen?

Als iemand mij via 1 van beide opties kan helpen (of via een andere optie natuurlijk) dan ben ik een tevreden mens! :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan