• 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.

RNG Vernieuwt niet zonder command button

Status
Niet open voor verdere reacties.

Archimond

Gebruiker
Lid geworden
18 jul 2011
Berichten
21
het probleem is het volgende:

Er moet een loting gebeuren die getallen oplevert van 1 tem 16; maar geen enkel getal mag dubbel voorkomen in de lijst en mag niet veranderen dmv F9 of data input.

Ik heb op het internet wel enkele mogelijke oplossingen gevonden maar helaas nog geen enkele succesvolle poging tot nu toe om dit tot stand te kunnen brengen.

Wat ik tot nu toe wel weet is dat zonder een VBA programma het onmogelijk is om een random generator te maken die niet constant herberekent als er een wijziging gebeurd zolang het excell programma draait.

Het hoofdprobleem is dat VBA te hoog gegrepen is voor me :(

Ideaal scenario zou zijn:
- De start loting knop veranderd van naam na gebruik om aan te geven dat er nummers gegenereerd zijn en kan niet meer gebruikt worden totdat de master knop ingedrukt word (beveiligd na gebruik en nadien enkel en alleen resetbaar door master knop)

- De master knop heeft één functie en die is het unlocken van de beveiliging op de start loting knop. (ontgrendeld start loting knop om een loting te kunnen beginnen)

- De Eind waarden die gegenereerd worden moet een lijst opleveren van 1 tem 16
( gesorteerd in 2 groepen van 8 met een tussenruimte van 3 cellen in een Verticale opstelling)

- De Random getallen mogen niet veranderen om één simpele reden.
Op een ander tabblad in de werkmap die ik tot nu toe heb wil ik dan RNG zij uitkomsten automatisch laten doorlinken zodat copy, paste ( waarden) overbodig gemaakt kan worden.

- Vermits De oplossing van deze RNG moet geintegreerd worden in een excell programma, zou niks van het programma vergrendeld of beveiligd mogen zijn.
Zodat de integratie in het Excell programma prombleemloos verloopt.

Deze stap succesvol kunnen integreren in het programma zou betekenen dat het programma bijna volautomatisch werkt zonder het aselect() comando te gebruiken dat vernieuwt bij elka aanpassing van het programma of met F9.

Hopelijk is er iemand die de Kennis bezit om dit te kunnen verwezenlijken.
Zodat eindelijk mijn programma bestempeld kan worden als (Fool Proof).
:)
 
Archimond,

Hopelijk is er iemand die de Kennis bezit om dit te kunnen verwezenlijken.
Zodat eindelijk mijn programma bestempeld kan worden als (Fool Proof).

Zou het dan ook niet handiger zijn om je programma hier te plaatsen?
 
Het is alleen de random number generator waar het om gaat op de andere paginas word gewoon gelinked naar de uitkomsten van de random number generator.

Het probleem is enkel en alleen het creeëren van de random generator.
want alleen met =aselect() werken zonder VBA lukt het niet, dit weet ik al uit ervaring.
Ik heb oplossingen gezien gehad op het internet die verschillende methodes hanteren.
Maar spijtig genoeg waren die bestanden allemaal beveiligd zodat het onmogelijk was om het gedeelte van de code eruit te halen om het bestand na te maken op kleinere schaal.
het systeem dat ik gezien had op Zeer grote schaal hanteerde 64 spelers / teams en deed de loting tem de Finale stap per stap. ( met master en start loting knop)

De opdeling na de initiële loting bestaat al,het enigste wat nog ontbreekt is een RNG die niet constant vernieuwt in dezlfde werkmap als de rest van het programma.
vandaar dat de RNG zijn range 1 tem 16 moet beslaan
VBA programmeren is niet simpel maar voor zover ik weet wel essentieel om een dergelijke random number generator tot stand te brengen.
 

ik heb dit even binnegehaald en gecontroleerd.
dit is in principe bijna hetzelfde als wat wij al hadden
Kolommen D en E
Kolom D is op basis van een aselect functie.
Het probleem bij deze functie is dat van het moment je gegevent wijzigd of toevoegd je hele trekking om zeep is. (aselect vernieuwe bij iedere handeling + F9)

Als je op deze aselct() functie doorlinkt naar een andere plaats in je werkmap en je codes veranderen continu, dan loopt de rest van het programma kompleet in het honderd omwille van het feit dat de toernooi indeling constant blijft veranderen.
En dit mag niet gebeuren.
Daarom dat ik op zoek ben naar een oplossing naar een generator die niet veranderd totdat je een comando geeft aan de loting dmv een knop die werkt via een een VBA programma.
 
30 juli 2003
jzeedijk
Senior Member

Had een zeer goede oplossing, ik had al met een kamaraad dit programma al eens bekeken maar de logica ontgaat me voorlopig nog steeds.

In deze post heeft hij een systeem met een volledige loting gemaakt voor 64 teams
die in teamx vs team y verband opgesteld staan.
met vermelding van tijd en datum dat de loting word uitgevoerd.

Het programma is heel mooi gemaakt vind ik persoonlijk en verdiend ook oprecht :thumb:

wat ik zou willen hebben is enkel en alleen de eerste loting met 16 cijfers van 1 tem 16 onder elkaar dat ongeveer hetzelfde werkt.
http://www.helpmij.nl/forum/showthread.php/127449-Loting
Reactie nummer 19

Totdat er een oplossing is, zal het waarden copy paste blijven. om de loting voor het toernooi op gang te trekken. en er ook voor te zorgen dat de vernieuwing van de aselect de loting niet om zeep helpt.:rolleyes:

Zelf ga ik in tussentijd mij wat proberen te verdiepen in zijn programma en hopleijk de logica achter het systeem begrijpen en kunnen implementeren.
 
Deze code plaats de cijfers 1 tot 16 in de cellen A1 tot A16

Code:
Sub loting()
  Randomize
  For j = 1 To 16
    Cells(j, 1) = Rnd
  Next
   
  [A1:A16] = [index(rank(A1:A16,A1:A16),)]
End Sub

Joske
 
Merci joske,
is een oplossing die ik tot nu toe nog niet gezien had!

Je oplossing is goed :thumb:
ben wel aan het bekijken of ik deze code éénmalig kan uitvoeren tenzij ik op een andere knop duw.

zodat niemand door perongeluk op de loting knop te duwen de hele rankings overhoop kan gooien.
 
ik ben er op dit moment al bijna :)

wat ik tot nu heb is de code van joske geïmplementeerd in een activex knop. (Start Loting)
Als ik de knop induw veranderd de programmatie de knop zijn text naar "Loting verricht" en voert de random 1-16 code uit.
Door op mijn (reset) "Activeer Loting" knop te duwen kan ik al de naam van de RNG knop naar zijn begintoestand terug wijzigen. ( Start Loting)

Nu moet ik enkel nog extra code implementeren waardoor de knop niet meer kan gebruikt worden totdat de activeer Loting knop word gebruikt.

alleen hopen dat het me lukt! al moet ik de hele week er nog aan sleutelen :evil:
 
Update

Dit is wat ik tot nu toe heb.
' 1 maal klikken veranderd de naam en zou moeten voorkomen dat de knop een tweede maal het programma doet lopen.( naam veranderd maar knop blijft werken:()
De Kleuren enz van de active X knoppen aanpassen lukt me.
Ik zit nu vast op het implementeren van een werkende vergrendeling voor de start loting knop.

' Commandbutton2 moet deze knop terug kunnen activeren samen met het resetten van de naam naar Start Loting


Private Sub Loting_Click()

Randomize
For j = 1 To 16
Cells(j, 1) = Rnd
Next
[A1:A16] = [index(rank(A1:A16,A1:A16),)]

Loting.Caption = "Loting verricht"
'veranderd de naam in loting verricht na het indrukken van de knop
End Sub

Private Sub CommandButton2_Click()
Loting.Caption = "Start Loting"
End Sub
'Activeer loting knop reset naam van Loting knop
 
Archimond,

Kan je je bestandje hier niet posten, zodat de helpers makkelijker kunnen zoeken naar een oplossing.

Joske
 
Code:
Loting.Visible = False

en via je andere knop terug zichtbaar maken met

Code:
Loting.Visible = true

Joske
 
Stond er niet bij stil gisteren; had barstende koppijn en was stikkapot,
maar het is me gelukt om je oplossing toe te voegen.
Het is een andere methode dan ik verwachte maar deze is net zo goed ! :)
Het maakt de Loting verricht command line wel overbodig maar dat is zo erg niet.

Zowiezo ga ik het bestand uploaden zodat andere mensen ook kunnen profiteren van je oplossingen :)

Als ik er ooit achter kom hoe ik de een knop na éénmaal klikken onbruikbaar kan maken zonder dat deze verdwijnt.
Dan zal ik deze ook nog uploaden :)

merci voor de hulp. :thumb:
 

Bijlagen

  • Loting 1tem16 V2.xlsm
    28,1 KB · Weergaven: 37
Laatst bewerkt:
Als ik er ooit achter kom hoe ik de een knop na éénmaal klikken onbruikbaar kan maken zonder dat deze verdwijnt.

verander
Code:
 Loting.visible = False

in

Code:
 Loting.Enabled = False

en natuurlijk bij true ook

Niels
 
Op basis van de visible command heb ik een knop toegevoegd die in feite een dummy knop is.
Wat ik toegevoegd heb is

Dummy.Visible = True & Dummy.Visible = False
Deze komen onder de regel te staan waar ik voorheen het commando gaf aan de start loting knop om te verdwijnen en terug te verschijnen.
Door deze command lines toe te voegen dmv een derde knop toe te voegen en deze op dezelfde plaats te zetten.
Creeërde ik de illusie dat de knop van toestand veranderd. In ontwerpmodus kan je de knoppen ook simpelweg van elkaar af halen om het beter te zien.

Zoals ik het nu heb vind ik het beter dan kan je goed zien wat de toestand van het programma is.

Bekijk bijlage Loting 1tem16 V3.xlsm
 
verander
Code:
 Loting.visible = False

in

Code:
 Loting.Enabled = False

en natuurlijk bij true ook

Niels

Uw oplossing werkt.
Ik heb misbruik gemaakt van het feit dat de tekst grijs word bij uitvoering van de code.
Door het kleurenschema aan te passen aan deze situatie is het grijs worden van de tekst niet erg en helpt het zelfs met de duidelijkheid.
Wanneer de knop terug actief word gemaakt word komt de hoofdtekstkleur terug tot leven.

Als de knop ingedrukt word zie je enkel en alleen de tekst start loting in een grijstint die samenvalt met de kleur van de knop.
Plus de omlijning van de tekst is nog steeds zichtbaar.

Bekijk bijlage Loting 1tem16 V4.xlsm
 
Kan gewoon met 1 knop.

Bekijk bijlage 133251

PS heb je mijn vorige bericht wel gezien?

Niels

Ja ik had de code aangepast in mijn programma
Blijkbaar de code op de knop verkeerde toegepast gehad om de dubbele toestand te gebruiken op de loting knop.
Daarom dat ik een dummy knop had toegevoegd.
Bij mijn test veranderde de tekst niet als de toestand van de knop veranderd

zodat het werkt met een start en reset zeg maar.

Het kan inderdaad met 1 knop die twee toestanden kan hebben.
heb je toevoeging uitgetest, wat je presenteerd is wat ik aan het proberen was totdat ik besloten had om knop toe te voegen om mijn fout te omzeilen.
 
Toevoeging Paswoord beveiliging van De RNG knop

Mij was verzocht om een nieuwe versie te maken.

De activatie knop mag alleen bruikbaar zijn Als in ik in een Cell of in een tekstvak een codewoord zou intikken om te voorkomen dat niet bevoegde personen de loting om zeep zouden helpen.

Ik heb al wat ideeen uitgewerkt maar tot nu toe werkte er nog geen.

Wat ik nu heb is het volgende qua werking:
De code moet voorkomen dat zonder de code in te tikken op de juiste plaats het programma niet kan herstarten.

Dit is de logische test die ik in code moet kunnen waarmaken:
Als (B1 = "paswoord") Dan Commandbutton2.Enabled
Gebaseerd op de code van de post hierboven

Het probleem tot nu toe is dat VBA de THEN functie niet kan uitvoeren die ik opgeef na De logische test.
 
Laatst bewerkt:
Zet je code voor die wachtwoord controle hier eens neer.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan