Toon posts:

[EXCEL] Macro stoppen wanneer input niet voorkomt

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedemorgen,

Ik heb in Excel een programma geschreven voor analyseren van productresultaten.
Hierbij heb ik erg veel gebruik gemaakt van macro's.

Uit een externe database worden alle producten ingeladen aan de hand van een opgegeven assortimentsgroep. Nu wil het wel eens voorkomen dat tussen de opgehaalde data dubbele productnummers zitten of gesaneerde producten (met een 999999 productnummer).

Middels een macro weet ik deze succesvol te verwijderen. Echter bij sommige assortimentsgroepen komt het ook voor dat er geen dubbele of gesaneerde productnummers voorkomen. Als ik dat de macro laat lopen, geeft hij een foutmelding/error, logisch want de macro heeft de benodigde input niet. Ook als je de macro per ongeluk tweemaal na elkaar laat lopen geeft hij logischerwijs de foutmelding/error.

Mijn vraag is: bestaat er een optie dat als de macro hier tegenaan loopt, hij niets uitvoert en alles bij het oude laat? Als ik de error laat skippen, dan worden alle rijen verborgen omdat het verbergen van alle productnummers de eerste functie van de macro is. Daarna gaat de macro over tot het zichtbaar maken van de gewenste te verwijderen nummers, deze zichtbare rijen worden verwijderd en vervolgens worden de rijen van de overige nummers weer zichtbaar gemaakt.

Ik hoop dat het een beetje duidelijk is, alvast erg bedankt!!

Gr,
Richard :)

[ Voor 4% gewijzigd door Verwijderd op 07-06-2019 09:24 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Dat kan door in de macro waarmee je dubbele productnummers verwijdert, voordat je naar het productnummer zoekt, een opdracht op te nemen die kijkt of dat productnummer wel voorkomt. Dat kan met de opdracht 'countif ' .

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het klinkt vooral als een slecht ontwerp. Veel gebruik gemaakt van de macro-recorder?
Beter lijkt het om het updaten van het scherm uit te zetten, alle niet nodige regels te verwijderen en dan weer het updaten van het scherm aan.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • I-King
  • Registratie: Maart 2003
  • Laatst online: 09:09
Klinkt alsof power query je hier veel makkelijker mee gaat helpen. In de laatste versie is dat ingebakken. https://support.office.co...e?ui=nl-NL&rs=nl-NL&ad=NL

Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 10-10 23:46
Verwijderd schreef op vrijdag 7 juni 2019 @ 09:22:
...
Als ik de error laat skippen, dan worden alle rijen verborgen omdat het verbergen van alle productnummers de eerste functie van de macro is. Daarna gaat de macro over tot het zichtbaar maken van de gewenste te verwijderen nummers, deze zichtbare rijen worden verwijderd en vervolgens worden de rijen van de overige nummers weer zichtbaar gemaakt.
...
Dit stuk klinkt raar. dubbel data verbergen, verwijderen en weer zichtbaar maken.
Ik zou eens kijken naar een dictionary object.
die vullen en dan
naar een nieuwe tabel, blad oid schrijven en van daar uit verder werken.

Een dictionary kan een uniek waarde maar één keer bevatten. Dus prima om mee te beginnen om met uniek waarden te werken.

Uiteraard kan ik me methodes bedenken die nog ge-eigender zijn, maar gezien je vraagstelling wellicht nog een brug te ver.
Maar je moet ergens beginnen, dictionaries.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Welkom :)

Eens met bovenstaanden, het lijkt (zeg ik zonder de code te kennen) er op als of je er van uit gaat dat macro-opnemen in productie bruikbare code oplevert.
Verwijderd schreef op vrijdag 7 juni 2019 @ 09:22:
Als ik dat de macro laat lopen, geeft hij een foutmelding/error, logisch want de macro heeft de benodigde input niet. Ook als je de macro per ongeluk tweemaal na elkaar laat lopen geeft hij logischerwijs de foutmelding/error.
Dat is ook niet logisch(erwijs), je wilt liever een hele andere opzet overwegen, maar als in de huidige opzet dan kan je checks inbouwen die de aantallen tellen. Liefst voor de rest van de code gaat werken, dat maakt het mogelijk een stuk sneller.

Als je het met de huidige opzet wilt proberen, kan je de relevante stukjes vd code geven?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Krulliebol
  • Registratie: Juli 2017
  • Laatst online: 08-01 18:52
Weet niet of je hierop zit te wachten, maar als anderen zo'n bestand ontvangen, worden macro's nog wel eens geblokkeerd om veiligheidsredenen. Idealiter los je zoiets dus op zonder macro's.
Pagina: 1