locatie wordt overschreven terwijl dit niet mag

  • Onderwerp starter Onderwerp starter samui
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

samui

Verenigingslid
Lid geworden
26 mei 2012
Berichten
207
Zie de bijlage voor beter begrijpen van mijn probleem.
Even een uitleg bij de bijage.
Indeling gaat op volgorde van even plekken aan de ene kant en oneven plaatsen aan de andere kant v/e straat in dit geval

Ik heb friet van piet en nikeair al een plaatsen toebedeeld en dat gaat goed.
De bestaande macro heeft friet van Piet netjes 3 plaatsen gegeven op locatie 4,6 en 8. De locaties in kolom A zijn nu bezet en kleuren automatisch rood.

Als ik nu Leo op locatie 4 wil gaan zetten krijgen ik een foutmelding dmv een messagebox dat deze locatie 4 reeds bezet is en de macro sluit en ik kan opnieuw een locatie kiezen voor Leo. Perfect

Als ik Leo nu op locatie 2 wil zetten is dat geen probleem voor de macro en zet leo op locatie 2 en zijn Leo heeft 2 standplaatsen komt op locatie 4 te staan en overschrijft dus locatie 4 Friet van Piet zonder foutmelding.
De macro gaat verder en op een ander tabblad waar een indeling van de bewuste straatlocaties wordt gevuld met dezelfde namen en rood gekleurde blokjes gaat het dus ook fout.

Mijn vraag is deze:
nadat ik een x ingegeven heb, in mijn private sub onder tabblad deelnemers, op cel b6 en daarna in de inputbox een 2 ingeef die in cel B6 deze 2 wegzet moet de macro ervoor zorgen dat de macro stopt als hij ziet dat locatie 4 al bezet is. Hij moet dus één even, of in geval van een oneven getal, plek vooruit kijken t.o.v de door mij ingegeven locatie voordat hij verder gaat omdat de macro ziet dat deze al rood gekleurd is.
Dit moet dus ook geblokt worden voordat de macro verder mag bij een plek met 3 of 4 locaties. De macro moet dus ook een melding geven als ik Intertoys op locatie 5 zou willen zetten. Dit gaat niet omdat er al iemand op locatie 11 staat. Uiteraard is het bij 1 locatie geen probleem omdat ik dan al de messagebox krijg dat die plek bezet is.
Het betreft hier dus de indeling als er 2,3 of 4 locaties voor 1 deelnemer te verdelen zijn en die op 2,4,of 6 nummers hoger in kolom A dan de ingegeven locatie een rood getal dreigt te overschrijven. De macro moet dit zien en de macro moet exit sub uitvoeren, zodat ik een nieuwe locatie kan ingeven die wel 2, 3 of 4 locaties opeenvolgend vrij heeft.

Ik ben benieuwd of iemand mij wederom kan helpen? Alvast bedankt voor jullie oplossingen.
 

Bijlagen

Verplaatst van Visual Basic naar Visual Basic for Applications
 
EUREKA.
Ik zet hem voorlopig even op hold.
Ik denk het al gevonden te hebben.
 
Zou je zo vriendelijk willen zijn om de oplossing hier dan ook te plaatsen? Dan hebben andere gebruikers er wellicht ook iets aan ;)
 
Sorry, geheel niet bij stil gestaan. Verwachtte niet dat iemand hetzelfde ooit zou nodig hebben. Maar met dit lukte het mij om de overschrijving te voorkomen.
Nu nog voor 2 en 4 deelnemers toevoegen. Gebruik ook de oplossing van Harry erbij van een paar weken terug vwb controle dubbele plaatsing maar nu was ook de vraag wat hierboven staat.
Met deze oplossing worden er geen plekken meer overschreven. Wellicht dat iemand het op een makkelijkere manier weet maar met mijn kennis van VBA kwam ik hiermee tot het juiste resultaat.


Code:
If ActiveSheet.Cells(x, 3).Value = 3 Then
ActiveSheet.Cells(x, 2).Value = ActiveSheet.Cells(x, 2).Value + 2
End If
On Error GoTo err1
If Application.WorksheetFunction.CountIf(Range("b:b"), Target) > 1 Then
'Als plek al vergeven is komt deze melding in beeld en moet je weer opnieuw beginnen met de x in te geven
Beep
MsgBox "Je wilt een bestaande deelnemer overschrijven", vbOKOnly Or vbCritical, "LET OP !!!!!"
ActiveSheet.Cells(x, 2).Select
Exit Sub
ElseIf ActiveSheet.Cells(x, 3).Value = 3 Then
ActiveSheet.Cells(x, 2).Value = ActiveSheet.Cells(x, 2).Value + 2
End If
On Error GoTo err1
If Application.WorksheetFunction.CountIf(Range("b:b"), Target) > 1 Then
'Als plek al vergeven is komt deze melding in beeld en moet je weer opnieuw beginnen met de x in te geven
Beep
MsgBox "Je wilt een bestaande deelnemer overschrijven", vbOKOnly Or vbCritical, "LET OP !!!!!"
ActiveSheet.Cells(x, 2).Select
Exit Sub
ElseIf ActiveSheet.Cells(x, 3).Value = 3 Then
ActiveSheet.Cells(x, 2).Value = ActiveSheet.Cells(x, 2).Value - 4
End If
err1:
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan