VBA automatisch nota's maken

Pagina: 1
Acties:

Onderwerpen

Vraag


  • loth36
  • Registratie: September 2020
  • Laatst online: 13-01-2023
Allen,

Na meerdere uren te googlen kom ik er even niet meer uit, dus ik vraag jullie, de experts, om hulp!

Ik gebruik excel om nota's te maken voor onze biljartvereniging. Aangezien er 20+ leden zijn kan dit een tijdrovende klus zijn. Daarom besloot ik om dit proces te automatiseren, tenminste zo ver als mogelijk.

We hebben een ledenlijst, met daarin 33 leden. Elk daarvan krijgt een aparte, gepersonaliseerde nota.

Wat ik nu wil maken is een template, die ik jaarlijks kan gebruiken. Ik kopieer de ledenlijst erin en speel de macro's af.

Hoe wil ik dit doen:
1 commandbutton "Maak nota's".

Zodra ik erop klik moet het volgende gebeuren:
Stap 1: Kopieer gegevens van speler 1 (tabblad 1) naar juiste posities op tabblad 2.
Stap 2: Daarna moet de gepersonaliseerde nota gemaakt worden. Dit doe ik door een aantal vragen te laten verschijnen in messageboxen. Vraag 1 en 2 betreft type contributie en vraag 3 is welk spelsoort de speler speelt. Dit kan ik aangeven in een checkbox. De keuzes die ik maak in de checkbox komen op de juiste plek in de nota.
Stap 3: Sla tabblad 2 op als PDF in desbetreffende map.

Tot zover werkt het prima.


Stap 4 is de stap waar ik jullie hulp bij nodig heb. Wat ik graag zou willen is dat er een loop gecreëerd wordt en dat er automatisch verder gegaan wordt met speler 2, speler 3, speler 4, et cetera net zo lang tot iedereen van de ledenlijst een eigen nota heeft en die dus automatisch opgeslagen is.

Omdat het veel code betreft heb ik het excel bestand geuploaded zodat jullie deze kunnen inzien:
https://filebin.net/1lxt1ckk0w2akrlt

Graag ontvang ik jullie hulp, bij voorbaat dank.

Met vriendelijke groeten,
Jan

Alle reacties


  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 23:55

g0tanks

Moderator CSA
Waar loop je vast?

Het stukje code dat telkens de gegevens van de leden kopiëert is
code:
1
Sheets("WBC__68").Range("X3").Copy

waarbij X verschilt omdat de gegevens in meerdere kolommen staan. Nu worden alleen de gegevens van één lid gekopiëerd omdat het regelnummer vaststaat (namelijk 3). Je moet dus een loopje maken die langs alle leden gaat op regels 2 t/m 36.

Waarom voer je trouwens de bedragen in via een MsgBox? Je hebt al een tabel waar je alle gegevens uit haalt, dus waarom voeg je daar ook niet kolommen toe voor de contributies? Dat lijkt me minder omslachtig en foutgevoelig.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


  • loth36
  • Registratie: September 2020
  • Laatst online: 13-01-2023
Goedenavond g0tanks,

"Je moet dus een loopje maken die langs alle leden gaat op regels 2 t/m 36."
Klopt helemaal! Zou je me kunnen helpen met zo'n loop? Daar loop ik namelijk op vast.

Omtrent de Message boxes: ik vul er geen bedragen in. Enkel Ja of Nee.
Indien Ja dan komt het bedrag er automatisch te staan. Indien Nee, dan gebeurt er niks. Dit zou inderdaad ook ingevoegd kunnen worden in het leden bestand.

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 23:55

g0tanks

Moderator CSA
loth36 schreef op zaterdag 19 september 2020 @ 19:57:
"Je moet dus een loopje maken die langs alle leden gaat op regels 2 t/m 36."
Klopt helemaal! Zou je me kunnen helpen met zo'n loop? Daar loop ik namelijk op vast.
Jawel, maar we verwachten ook eigen inzet. :)

Waar loop je op vast? Heb je al gezocht naar simpele voorbeelden van een loop in Excel? Waarom lukt het niet om dat te vertalen naar wat jij wil?

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


  • Datazor
  • Registratie: December 2015
  • Laatst online: 17-03-2021
Helaas kan ik het bestand niet bekijken echter
heb ik zelf ooit een gelijkwaardig probleem gehad, toen heb ik in excel een databaseje gemaakt en dit dmv een verzendlijst naar word gestuurd. Vanaf hier kun je alles opslaan etc. Dit is een standaard functie in word.

  • darth.75
  • Registratie: Januari 2009
  • Laatst online: 21:38
Lang geleden dat ik iets gedaan heb in vba. Zoek even op FOR ... TO als ik me goed herinner.
Definieer een variabele dat het aantal leden behelst. Kun je zelfs uit laten lezen van de sheet, zodat nieuwe toegevoegde leden automatisch meegaan. Definieer vervolgens een teller die telt van 1 tot dat aantal. Maak nu een dynamische verwijzing waarbij de teller bepaalt in welke rij je zit. Klaar.

Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Datazor schreef op zaterdag 19 september 2020 @ 20:29:
Helaas kan ik het bestand niet bekijken echter
heb ik zelf ooit een gelijkwaardig probleem gehad, toen heb ik in excel een databaseje gemaakt en dit dmv een verzendlijst naar word gestuurd. Vanaf hier kun je alles opslaan etc. Dit is een standaard functie in word.
Dat is inderdaad de manier waarop je dit soort dingen aanpakt. Maak de nota in Word en maak met een mailmerge de individuele nota's aan.

Mocht je nu persé met een vba loopje willen werken:

code:
1
2
3
4
5
6
7
8
9
dim i as integer
for i = 2 to 30 'rijnummers, uiteraard
 Maaknota i
next i

sub Maaknota(rij as integer)
'copieerslag en ipv "A2" doe je "A"& rij of cells(1,i)
'doe de rest
end Sub

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


Acties:
  • 0 Henk 'm!

  • superduper
  • Registratie: Juli 2001
  • Laatst online: 14-09 11:19

superduper

Z3_3.0 Woeiiii

Ik doe dit ook regelmatig en heb iets gemaakt adv dit voorbeeld. Je hebt dan 2 sheets: één met data, en één met je template: https://www.mrexcel.com/b...oices-with-excel.1038868/
Pagina: 1