Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Excel-bestand met teveel macro's ??  (gelezen 3408 keer)

0 leden en 1 gast bekijken dit topic.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Excel-bestand met teveel macro's ??
« Gepost op: 28 september 2006, 10:47:41 »
Goedemorgen,

Voor mijn werk heb ik een bestand gemaakt met daarin heel veel macro's die ik mbv. de macro-recorder heb gemaakt en later aangepast.
Omdat ik op het gebied van VBA veel te weinig kennis heb denk ik dat het veel korter zou moeten kunnen (en misschien dus ook sneller).

De code die ik heb zal ik als bijlage toevoegen, maar ik zal eerst in het kort eea. uitleggen.
Het bestand berekent aan de hand van de macro's de uitgaven over 2006.

De "Hoofd"macro heet Uitgaven_Totaal_2006.
Hierin zitten 12 "Maand"macro's met de namen Uitgave_januari, Uitgave_februari enz.
Binnen elke maandmacro zitten maar liefst 40 kleine macro's
die ieder weer een bepaalde soort kosten berekenen.

Als voorbeeld stuur ik mee de maandmacro over juni met daarin de kleine macro's. Zo heb ik er dus 12.
Ik denk als jullie als excel-specialist dit bekijken dat er veel veranderd, aangepast, verkleind, versneld kan worden.

Graag jullie reactie.

Niet schrikken over de lengte van de macro !

Alvast bedankt voor jullie bevindingen.

M.vr.gr.
Eric

Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Excel-bestand met teveel macro's ??
« Reactie #1 Gepost op: 28 september 2006, 13:27:57 »
Niet schrikken over de lengte van de macro !

Goed dat ik neerzat toen ik het bestand opende: 16 blz code!!! Anders had ik achterover gevallen... Heb dan ook niet verder gekeken.

Ik zal zien wat er mogelijk is, maar dit is veel werk... en in schaarse, dus dure, vrije tijd is dat niet evident.

Als iemand anders meer vrije tijd heeft als ik, feel free to join the thread...

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Re:Excel-bestand met teveel macro's ??
« Reactie #2 Gepost op: 28 september 2006, 15:31:29 »
Hallo Wigi,

Ik had gewaarschuwd.
Het heeft geen haast, want de macro werkt.
Het hoeft dus niet perse.
Maar ik dacht omdat ik toch bezig ben iets te leren over VBA dat het toch handig zou zijn om te zien wat er verbeterd kan worden.

Toch alvast bedankt voor je reactie.

Gr.
Eric
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Excel-bestand met teveel macro's ??
« Reactie #3 Gepost op: 29 september 2006, 00:48:25 »
Eric

Heb er heel lang aan gezeten... :-[

Test deze code eens uit op een kopie van het bestand, en begrijp tevens de logica van het doorgeven van argumenten aan een sub (zie bijlage):
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Re:Excel-bestand met teveel macro's ??
« Reactie #4 Gepost op: 29 september 2006, 10:22:05 »
Beste Wigi,

Sorry dat je er veel tijd aan hebt moeten besteden.
Ik zal proberen zo snel mogelijk eea. gaan proberen en laat je daarna iets weten.

Nogmaals bedankt voor alle moeite.

Gr.
Eric
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Re:Excel-bestand met teveel macro's ??
« Reactie #5 Gepost op: 29 september 2006, 12:23:19 »
Hallo Wigi,

Om je niet te lang te laten wachten en omdat zo benieuwd was met je oplossing ben ik er toch al mee aan de slag gegaan.
Jouw aangepaste macro heb ik in een kopie van het bestand getest en het werkt perfect.

Om te leren heb ik toch nog enkele vraagjes over de macro:

1. Wat betekent in het eerste gedeelte van de macro: Criterial:=CStr(Mid(nummer, 2))

2. In het laatste deel van de macro onder Sub Uitgave_juni():
Je begint met Call uitgave (619089, 126) en daaronder staat 2 keer Call Uitgave2(.., ...). Wat gebeurt hier en wat betekent (40, 127) en (41, 128) ?
Waarom komen deze 2 regels te staan tussen Call UItgave(619089, 126) en Call Uitgave(619200, 130)?
3. Na de regel met Call Uitgave2(41, 128) komt de macro Uitgave_0619211. Waarom juist hier op deze plaats ?
4. Tijdens het uitvoeren van de macro (ong. 5 sec.) flikkert het beeld, maar dit is denk ik niet te voorkomen ? Of wel ?

Als laatste algemene vraag:
Jouw macro is voor de maand juni.
Ik denk dat het de bedoeling is dat ik deze op enkele plaatsen aanpas voor de maanden juli t/m december ?
Ik heb dit al gedaan voor juli en die werkt dan ook goed.

Nogmaals bedankt voor alles.

Gr.
Eric



Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Excel-bestand met teveel macro's ??
« Reactie #6 Gepost op: 29 september 2006, 13:21:58 »
Hallo Wigi,

Om je niet te lang te laten wachten en omdat zo benieuwd was met je oplossing ben ik er toch al mee aan de slag gegaan.
Jouw aangepaste macro heb ik in een kopie van het bestand getest en het werkt perfect.

Om te leren heb ik toch nog enkele vraagjes over de macro:

1. Wat betekent in het eerste gedeelte van de macro: Criterial:=CStr(Mid(nummer, 2))

2. In het laatste deel van de macro onder Sub Uitgave_juni():
Je begint met Call uitgave (619089, 126) en daaronder staat 2 keer Call Uitgave2(.., ...). Wat gebeurt hier en wat betekent (40, 127) en (41, 128) ?
Waarom komen deze 2 regels te staan tussen Call UItgave(619089, 126) en Call Uitgave(619200, 130)?
3. Na de regel met Call Uitgave2(41, 128) komt de macro Uitgave_0619211. Waarom juist hier op deze plaats ?
4. Tijdens het uitvoeren van de macro (ong. 5 sec.) flikkert het beeld, maar dit is denk ik niet te voorkomen ? Of wel ?

Als laatste algemene vraag:
Jouw macro is voor de maand juni.
Ik denk dat het de bedoeling is dat ik deze op enkele plaatsen aanpas voor de maanden juli t/m december ?
Ik heb dit al gedaan voor juli en die werkt dan ook goed.

Nogmaals bedankt voor alles.

Gr.
Eric


1. Wat betekent in het eerste gedeelte van de macro: Criterial:=CStr(Mid(nummer, 2))

Mid(nummer, 2)  neemt de getallen over beginnende vanaf het 2de getal. Mid() zet het resultaat om naar een string (tekst dus).

2. Je begint met Call uitgave (619089, 126) en daaronder staat 2 keer Call Uitgave2(.., ...).

Ik heb de volgorde van jou macro aangehouden. Als de volgorde geen kwaad kan, mag je ze omwisselen en bij mekaar zetten wat bij mekaar hoort.

Wat gebeurt hier en wat betekent (40, 127) en (41, 128)?

Net zoals jij gebruik ik andere modules. De 40 en de 127 zijn argumenten (net als argumenten in een functie zoals SOM of zo). Call uitgave (619089, 126)
betekent: voer de module Uitgave uit, waarbij de argumenten 619089 en 126 zijn. In de module zelf zijn de argumenten gedefinieerd. Ik gebruik dus vaak dezelfde
macro, maar met andere argumenten (aangezien er behalve de argumenten toch niets wijzigt). Zo wordt de code ingekort.

Als de macro dan toch wijzigt (niet alleen de argumenten), dan gebruik ik een andere module. Bv. Uitgave2

Waarom komen deze 2 regels te staan tussen Call UItgave(619089, 126) en Call Uitgave(619200, 130)?

Hangt af van jouw volgorde in het oorspronkelijke bestand.

3. Na de regel met Call Uitgave2(41, 128) komt de macro Uitgave_0619211. Waarom juist hier op deze plaats ?

Hangt af van jouw volgorde in het oorspronkelijke bestand.

4. Tijdens het uitvoeren van de macro (ong. 5 sec.) flikkert het beeld, maar dit is denk ik niet te voorkomen ? Of wel ?

aan het begin van de code:

Application.ScreenUpdating = False

aan het einde van de code:

Application.ScreenUpdating = True

Als laatste algemene vraag: Jouw macro is voor de maand juni. Ik denk dat het de bedoeling is dat ik deze op enkele plaatsen aanpas voor de maanden
 juli t/m december ?

Klopt.

Nogmaals bedankt voor alles.

Gr.
Eric

De Excelsectie op mijn site kan jou wellicht (binnenkort) interesseren.

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

 


www.combell.com