• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Wat is beter ?

Status
Niet open voor verdere reacties.

Revdutchie

Gebruiker
Lid geworden
29 nov 2009
Berichten
645
Beste forummers,

Ik heb de volgende macro

Code:
Sub thuis10()

If [C40] >= 3 And [T40] = "" Then
[E5] = [E5] + 10
End If

If [E40] >= 3 And [C40] = "" Then
[C40] = 10
End If

If [G40] >= 3 And [E40] = "" Then
[E40] = 10
End If

If [G40] = "" Then
[G40] = 10
End If

Range("B2").Select
End Sub

Deze werkt op zich prima ook door de volgorde de laatste if is in principe de eerste die uitgevoerd wordt. Is het nou het beste om het zo te laten staan of om de volgorde om te draaien en dan elke if af te sluiten met een exit sub ?

Groeten,
Jacques
 
Deze werkt op zich prima ook door de volgorde de laatste if is in principe de eerste die uitgevoerd wordt.
Dat lijkt mij eerlijk gezegd nogal onwaarschijnlijk.

In plaats van de IF's zou je ook kunnen kiezen voor ElseIF.

If ....
ElseIf ...
ElseIf ...
End If ...

Wordt er aan een If of ElseIf voldaan dan gaat de code verder vanaf de End If.
Ik ben persoonlijk helemaal geen voorstander van Exit Sub.

Met vriendelijke groet,


Roncancio
 
Dat lijkt mij eerlijk gezegd nogal onwaarschijnlijk.

In plaats van de IF's zou je ook kunnen kiezen voor ElseIF.

If ....
ElseIf ...
ElseIf ...
End If ...

Wordt er aan een If of ElseIf voldaan dan gaat de code verder vanaf de End If.
Ik ben persoonlijk helemaal geen voorstander van Exit Sub.

Met vriendelijke groet,


Roncancio

Nou het werkt echt, we hebben er zelfs al meerdere wedstrijden mee gewerkt.

Maargoed beter is dus code omdraaien en elseif gebruiken ? Houd dat in dat indien aan de eerste if voldaan wordt de rest van de macro niet uitgevoerd wordt ?

Groeten,
Jacques
 
Ok heb het aangepast, er staat nu

Code:
Sub thuis10()

Application.ScreenUpdating = False

If [G40] = "" Then
[G40] = 10

ElseIf [G40] >= 3 And [E40] = "" Then
[E40] = 10

ElseIf [E40] >= 3 And [C40] = "" Then
[C40] = 10

ElseIf [C40] >= 3 And [T40] = "" Then
[E5] = [E5] + 10
End If

Range("B2").Select
Application.ScreenUpdating = True

End Sub

Dat werkt ook :thumb:
Bedankt hiervoor.

Groeten,
Jacques
 
De regels

Code:
Application.ScreenUpdating = False
Range("B2").Select
Application.ScreenUpdating = True
zijn overbodig.
 
De regels

Code:
Application.ScreenUpdating = False
Range("B2").Select
Application.ScreenUpdating = True
zijn overbodig.

Je hebt gehlijk :thumb::thumb:
Heb ze verwijderd en werkt prima,

Sterker nog door deze manier kunnen alle "And's"
ook weg

Groeten,
Jacques
 
Laatst bewerkt:
Wat heeft dat er mee te maken?

Tja ik weet niet hoe ik dat uit moet leggen, dus doe het op zijn simpelst.

Ik had bijvoorbeeld,

als a1 leeg is dan a1 = 10
als b1 leeg is en a1 = 10 dan b1 = 10

in bovenstaande volgorde ging het fout omdat a1 en b1 meteen 10 werden en dat mag niet als ik de volgorde veranderde ging het wel goed, dus

als b1 leeg is en a1 = 10 dan b1 = 10
als a1 leeg is dan a1 = 10

dan werd bij 1 keer klikken a1 gevuld en bij de volgende keer klikken b1

met elseif hoeft de en (and) niet meer omdat de macro bij waar meteen naar end if gaat en dus maar 1 aktie doet.

Hoop dat het zo duidelijker is.

Groeten,
Jacques
 
Laatst bewerkt:
Nou het werkt echt, we hebben er zelfs al meerdere wedstrijden mee gewerkt.

Maargoed beter is dus code omdraaien en elseif gebruiken ? Houd dat in dat indien aan de eerste if voldaan wordt de rest van de macro niet uitgevoerd wordt ?

Groeten,
Jacques

Ik geloof best dat het werkt maar niet dat eerst de laatste IF wordt uitgevoerd.

Met vriendelijke groet,


Roncancio
 
Ik geloof best dat het werkt maar niet dat eerst de laatste IF wordt uitgevoerd.

Met vriendelijke groet,


Roncancio

Nee dat klopt, drukte me onhandig uit denk ik. De laatste if wordt uiteraard als laatste uitgevoerd, maar is wel de eerste aktie van deze macro omdat dat het begin is van de score.

Maar ik ben mega blij met jouw oplossing :thumb:, want is veel korter en zoals ik hierboven uitleg heb ik dus de dingen voor AND ook niet meer nodig !

In totaal heb ik namelijk 22 van deze macro's in 1 sheet staan.

Groeten,
Jacques
 
Nee dat klopt, drukte me onhandig uit denk ik. De laatste if wordt uiteraard als laatste uitgevoerd, maar is wel de eerste aktie van deze macro omdat dat het begin is van de score.

Maar ik ben mega blij met jouw oplossing :thumb:, want is veel korter en zoals ik hierboven uitleg heb ik dus de dingen voor AND ook niet meer nodig !

In totaal heb ik namelijk 22 van deze macro's in 1 sheet staan.

Groeten,
Jacques

Graag gedaan.
Als de 22 macro's grotendeels identiek zijn, dan zou je er aan kunnen denken om te kijken of de macro's korter kunnen.

Met vriendelijke groet,


Roncancio
 
Graag gedaan.
Als de 22 macro's grotendeels identiek zijn, dan zou je er aan kunnen denken om te kijken of de macro's korter kunnen.

Met vriendelijke groet,


Roncancio

Ja ze zijn nagenoeg gelijk, alleen andere cellen en andere waarde. Die waarde gebruik ik overigens alleen voor de voorwaardelijke opmaak om de cel een kleur te geven. De hele waarde wordt voor de rest niet gebruikt, muv de laatste elseif :) Het is ook een knop.

Wat het eigenlijk doet bij er op klikken is;

Als A1 niet groen is maak A1 groen ANDERS
Als B1 niet groen is maak B1 groen etc etc

Moet even zoeken, ergens heb ik het bestand al staan, zal zo de link plaatsen.
EDIT: http://www.helpmij.nl/forum/showpost.php?p=3063415&postcount=10

alleen naar het bestandje kijken, de rest uit dat topic is al opgelost het gaat om het tabblad tactics.

Groeten
Jacques
 
Laatst bewerkt:
Ik zie dat je ipv knoppen tekenvelden hebt gebruikt en daar code aan hebt gehangen.
Dat is jammer omdat je met knoppen VBA de tekst op de knoppen had kunnen laten lezen.
Dat scheelt nogal in het aantal code regels.

Dus men drukt op een knop en VBA kijkt welke knop is ingedrukt en welke tekst daarop staat.

Ik heb een simpel voorbeeld bijgevoegd.
Zodra je op 1 van de knoppen klikt, verschijnt de tekst die op die bewuste knop staat in een messagebox.
Je kunt de tekst(=Caption) op de knoppen aanpassen zodat de aangepaste tekst verschijnt als je op de knop klikt.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • Knoppen.xls
    37,5 KB · Weergaven: 33
Ok, cool, dat wist ik niet.

Maar kan je knoppen wel kleuren ? Ik heb het met tekenen gedaan omdat dit op tv schermen wordt getoont en er duidelijk onderscheid moet zijn tussen geel en groen.

Dat wordt morgen een mooi dagje spelen en expirimenteren, het is toch geen weer om weg te gaan.

Weer bedankt Roncancio :thumb:

EDIT;
Volgens mij gaat het niet veel code schelen omdat ik vanwege het grafische aspect de te kleuren cellen toch 1 voor 1 moet opgeven ??? Of zie ik dat fout.

Groeten,
Jacques
 
Laatst bewerkt:
Gebruik knoppen v/d Werkset Besturingselementen, die kan je wel kleuren.
 
Gebruik knoppen v/d Werkset Besturingselementen, die kan je wel kleuren.

Ok, thx Rudi

Ook, daar ga ik mee spelen, al is het alleen maar om weer meer te leren.
Maar wat ik al zei hierboven, volgens mij gaat het me geen code regels schelen omdat ik toch de cellen (het bereik) steeds apart moet benoemen.

Groeten,
Jacques
 
Laatst bewerkt:
Ok, thx Rudi

Ook, daar ga ik mee spelen, al is het alleen maar om weer meer te leren.
Maar wat ik al zei hierboven, volgens mij gaat het me geen code regels schelen omdat ik toch de cellen (het bereik) steeds apart moet benoemen.

Groeten,
Jacques

Als de bereiken op een regelmatige manier zijn bepaald dan kan het wel coderegels schelen omdat je dan het bereik kan berekenen adhv het getal op de knop.
Bijv.:
20 op rij 20
19 op rij 22
18 op rij 24
etc

Formule: 20 + ((20 - getal) *2)
Stel getal = 18

20 + ((20 - 18)* 2) =20 + 2 * 2 = 24

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan