Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Vraag


Acties:
  • 0Henk 'm!

  • jmvdb22
  • Registratie: februari 2012
  • Laatst online: 09-06-2020
Mijn vraag
Ik heb een macro gemaakt (opgenomen) in excel. In het bestand waar ik deze gemaakt heb werkt deze gewoon, echter komt er een klein probleem nadat ik het bestand heb opgeslagen als een nieuw bestand. Het originele bestand heet 'week 22', deze heb ik opnieuw opgeslagen als 'week 23'. In week 22 heb ik een knop aangemaakt in snelle toegang voor de macro voordat ik deze opnieuw had opgeslagen. Als ik op deze knop druk opent excel automatisch 'week 22' voordat de macro uitgevoerd wordt. Als iemand anders in dit bestand werkt opent excel deze als alleen lezen en werkt de macro ook gewoon. Als ik in 'week 23' klik op 'macro's weergeven' en op die manier de macro uitvoer werkt het wel naar behoren.

Hoe kan ik zorgen dat de macro geen ander bestand opent?

Als ik met beide bestanden open klik op 'macro's weergeven' zie ik 2 macro's met voor 1 de naam van het andere bestand erbij.

Dit is hoe de macro er nu uitziet.

Sub Formules()

Range("M4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=COUNTIF([type],[@type])>1"
Range("X4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=COUNTIF([personeel],[@personeel])>1"
Range("AB4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=COUNTIF([inhuur],[@inhuur])>1"
Range("AM4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=COUNTIF([VW/BE],[@[VW/BE]])>1"
Range("AQ4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=COUNTIF([auto],[@auto])>1"
Range("AQ5").Select
End Sub


Relevante software en hardware die ik gebruik
Ik gebruik office 2013 op windows 10

Wat ik al gevonden of geprobeerd heb
Ik heb geprobeerd te zoeken, maar kan alleen instructies vinden die vertellen hoe je wel een ander bestand opent via een macro en niet een oplossing voor dit probleem.

Ps. advies over het verbeteren van de macro opzich is ook altijd welkom, mochten jullie met afschuw kijken naar mijn simpele creatie. :P

[Voor 4% gewijzigd door jmvdb22 op 26-05-2020 11:03. Reden: Er stond geen vraag haha]

Alle reacties


Acties:
  • 0Henk 'm!

  • jmvdb22
  • Registratie: februari 2012
  • Laatst online: 09-06-2020
Moet ik dan in elk bestand een nieuwe knop aanmaken of is de macro aan te passen zodat deze verwijst naar het huidige bestand?

Acties:
  • 0Henk 'm!

  • jmvdb22
  • Registratie: februari 2012
  • Laatst online: 09-06-2020
De knop zelf zit in de snelle toegang (was niet eens mijn eerste idee, maar dit is wel handiger dan wat ik zelf in gedachten had als dit werkt). Met de rechter muisknop komt dus geen optie voor de macro zelf naar voren en als ik via opties naar 'werkbalk snelle toegang' ga kan ik ook de knop zelf niet aanpassen.

Als ik maar 1 bestand open heb en in het bestand naar 'Macro's weergeven' ga staat er alleen 'formules' bij de macro's. Als ik 2 bestanden open heb komt er wel een tweede macro bij te staan voor de macro in het andere bestand.

Acties:
  • 0Henk 'm!

  • jmvdb22
  • Registratie: februari 2012
  • Laatst online: 09-06-2020
dix-neuf schreef op dinsdag 26 mei 2020 @ 13:28:
1. Sla de macro op in de persoonlijke werkmap, hij is dan in elk bestand beschikbaar.
2. Begin en eindig de macro met With ActiveSheet....End With.
3 Om bewerkingen op cellen uit te voeren is het niet nodig om ze te selecteren.
4. Waarom, als je een macro gebruikt, formules in cellen plaatsen? Je kunt meteen het resultaat laten weergeven, bv: Range("M4").value = worksheetfunction.Countif(...
1. Hoe bedoel je het in de persoonlijke werkmap opslaan? Hij is niet in elk excel-bestand nodig, maar eigenlijk alleen in de bestanden die hier uit voortkomen, welke in principe altijd gemaakt worden door het bestand onder een andere naam op te slaan.
2. Done, danku!
3. Dus in plaats van ActiveCell dan Range("M4") invullen?
4. Het is van belang dat zonder het activeren van de macro ook de berekening gedaan wordt. aan de hand van de formule wordt een voorwaardelijke opmaak op een andere cel gedaan. Dit leek mij het handigst daarvoor.
Deze manier leek mij ook handig doordat in een lege kolom in de tabel de formule automatisch doorgevoerd werd. De tabel heeft een wisselend aantal rijen, dus ik kan geen vast aantal rijen geven waarin de formule berekend moet worden.
Het enige probleem dat ik nu heb is als een cel in de kolom de formule mist oid de macro nu alleen tot aan die cel wordt uitgevoerd, dus ik de macro vaker moet uitvoeren om alsnog de hele kolom met deze formule te vullen. Hebben jullie enig idee hoe ik kan zorgen dat de macro in 1x de hele kolom bewerkt?

Acties:
  • 0Henk 'm!

  • jmvdb22
  • Registratie: februari 2012
  • Laatst online: 09-06-2020
F_J_K schreef op dinsdag 26 mei 2020 @ 14:20:
Inderdaad. Als het een functie is die in 'ieder' bestand moet werken dan wil je die functie inderdaad niet in het bestand zelf opslaan. Wel kan het goed zijn om in de functie dan een check in te bouwen of je het in het juiste bestand gebruikt. Bijv door te kijken of de actieve sheet een bepaalde naam heeft, of een bepaalde waarde in bijv cel A1.

[...]

OK :P

Gebruik geen .select behalve als het echt de bedoeling is dat men "fysiek de muis ziet bewegen". Zoals schijnbaar bij die Range("AQ5").Select waar je blijkbaar een reden hebt om per se te eindigen met selectie van cel AQ5.

Doe niet: foo.Select en dan Selection.bar
maar: foo.bar

En niet eerst F4 selecteren en dan Range(Selection maar doe meteen Range("f4"
Ik heb nu inderdaad die laatste .Select verwijderd, was wat overbodig, maar automatisch opgenomen met de macro.
F_J_K schreef op dinsdag 26 mei 2020 @ 14:20:
Inderdaad. Als het een functie is die in 'ieder' bestand moet werken dan wil je die functie inderdaad niet in het bestand zelf opslaan. Wel kan het goed zijn om in de functie dan een check in te bouwen of je het in het juiste bestand gebruikt. Bijv door te kijken of de actieve sheet een bepaalde naam heeft, of een bepaalde waarde in bijv cel A1.

[...]

OK :P

Gebruik geen .select behalve als het echt de bedoeling is dat men "fysiek de muis ziet bewegen". Zoals schijnbaar bij die Range("AQ5").Select waar je blijkbaar een reden hebt om per se te eindigen met selectie van cel AQ5.

Doe niet: foo.Select en dan Selection.bar
maar: foo.bar

En niet eerst F4 selecteren en dan Range(Selection maar doe meteen Range("f4"
Ik heb ondertussen wat dingen aangepast, maar nu selecteert de macro een te groot bereik en verwijderd die teveel, dus daar heb ik iets verkeerds veranderd denk ik.

Verder inderdaad de laatste selectie veranderd, want dat is totaal onnodig.

Het stukje met foo.select snap ik niet wat je bedoelt eerlijk gezegd haha
Pagina: 1


Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True