kleine aanpassing aan die ene macro, eerder muggezifterij, je maakt Uit optional, dus als je niets meegeeft, wordt er van uit gegaan dat die false is (omdat je hem gedeclareerd had als boolean.
Iets declareren is soms gevaarlijk. Zo had je a hier ook kunnen declareren als integer, logisch kan enkel integere waarden tussen 0 en 60 aannemen, maar in "shapeclick" is a het resultaat van een vermenigvuldiging en omdat je niets gezegd had, nam VBA aan dat het een Double was. De oplossing was daar dan om a ook in "shapeclick" te declareren als integer. Wel/niet declareren is vaker een punt van discussie. Vroeger was ik een "die hard" ivm. declareren, met de jaren ben ik een softie geworden.
Als ultieme uitdaging had je zelfs a en Uit kunnen declareren als "global" bovenin die ene module en dan hoefde je niets meer mee te geven als parameter. (is wel tricky, gevaarlijker)
Sub Worp_verwerken(a, Optional Uit As Boolean)
Hieronder dan 3 identieke manieren van aanroepen, de 3e kan enkel na die "optional".
Ook hier is het enkel kwestie van smaak, winkelen mag je nooit doen op een lege maag, dus aangezien je net gegeten hebt, kan je een beredeneerde afweging hierover maken.
Call Worp_verwerken(a, False) 'versie pitufo
Worp_verwerken a, False 'evenwaardige versie zonder de call
Worp_verwerken a 'na toevoegen van optional moet je, in geval van false niets meegeven
Nog een trucje die ik toepas, ik zou aan je macros hoofdletters toevoegen, dus "Sub
Worp_
Verwerken ..." en als je later die macro ergens aanroept, dan worden kleine letters automtisch omgezet naar hoofdletters las de macro bestaat, een vorm van "intellisense"
Ik ben verder ook geen groot bewonderaar van de wat verouderde "[...]"-notering, die is en bondig maar nogal gevaarlijk en eigenlijk houdt die een "Evaluate" in. Ik prefereer dus om alles voluit te schrijven en dan ook nog om bovenin in je module, bv. in Worp_Verwerken letterlijk het werkblad te vermelden, in dit geval bv. With sheets("Scorebord") ..... End With, om te vermijden dat, wanneer je in een ander tabblad staat en op 1 of andere domme manier die macro toch aangeroepen wordt, geen zaken naar het verkeerde tabblad weggeschreven worden. Een beetje discipline bij het schrijven van de macro, voorkomt straks veel frustraties bij het zoeken naar een fout, die maar sporadisch optreedt.
Sub Worp_verwerken(a As Integer, Optional Uit As Boolean)
'worp op werkblad zetten
With Sheets("scoreblad")
i = Application.CountA(.Range("AE16:AG16"))
.Range("AE16").Offset(, i).Value = a
en nog een laatste uitsmijter, link
https://www.experts-exchange.com/articles/26599/Installing-Smart-Indenter-in-Office-2013-2016.htmlDaarin vind je een app "Smart Intender", die straks onder de knop "bewerken" in je VBA-editor komt en die automatisch je code doet inspringen, wanneer je "if ... else ... endif", loops, select case, "with ... End with" en commentaren gebruikt. Op de recentste office zouden er wat installatieproblemen zijn, maar Softaid heeft dat een tijdje geleden even gedaan en die kan je zo verder helpen.
Dat bevordert enorm de leesbaarheid en helpt ook bij het zoeken naar fouten omdat je bv een "endif" vergeten of verkeerd gebruikt hebt.