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

Reeks benoemen wel of niet koppelen

Status
Niet open voor verdere reacties.

jv345

Gebruiker
Lid geworden
25 mrt 2007
Berichten
167
Hallo,

In een werkblad heb ik nummers staan in kolom 2 ( kostenplaats).
Door de gebruiker kunnen er, via datavalidatie, in kolom 7 (objectnummers) aan gekoppeld worden.
Er zijn echter groepen kostenplaatsen waarbij deze koppeling niet mag plaatsvinden.
Dit zijn de volgende reeksen:
50000 t/m 50450
50500 t/m 50690
50810
50900 t/m 50999
Een deel heb ik al in code. Zie voorbeeld. Dit werkt ook echter als ik er een andere groep aankoppelt, kom ik iedere keer in een loop terecht. Ik doe dus iets verkeerd.
Is het trouwens de bedoeling om iedere keer (nieuwe afvraging) te beginnen met een If en and If of is het in 1 gedeelte mogelijk?l



If Target.Column = 7 Then
If Target.Value > 0 And Cells(Target.Row, 2) < 50460 Then
MsgBox "De door u gekozen kostenplaats is NIET object gebonden!", vbCritical, "Niet toegestaan"
Range(Target.Address) = ""
End If
 
Waarschijnlijk is dit onderdeel van een worksheet_change event macro.
Dat je in een loop komt wordt veroorzaakt door het veranderen van de waarde in kolom 7 met de regel
Code:
range(target,address).value=""
Hierdoor wordt weer het worksheet_change event getriggerd en begin je van voren af aan. De waarde is dan niet > 0 en de macro zal dan waarschijnlijk wel stoppen.
 
Hans,

Je eerste opmerking is inderdaad juist. Dit gedeelte maakt onderdeel uit van een worksheet_change event macro.
De reden die je aangeeft waarom ik in een loop terecht komt, snap ik nu ook.
Een oplossing van de vraag om de reeksen in 1 gedeelte van een macro te krijgen, heb ik echter nog niet.
Heb je een suggestie?
 
Hallo,

De vraag laat mij maar niet los.
Ik heb een lijstje gemaakt van de kostenplaatsen (kolom 2) waarbij geen objectnummer kolom 7 ingevuld mag worden. Sheets("BBP").Range("BZ21:BZ58")
Hiermee hoopte ik dan de verschillende reeksen in 1 keer te kunnen tackelen.
Echter de macro doet helemaal niets.
Wie heeft de geniale oplossing voor mij.

If Target.Column = 2 And Cells(Target.Row, 7) > 0 Then
With Sheets("BBP").Range("BZ21:BZ58")
If Not Getal Is Nothing Then
MsgBox "De door u gekozen kostenplaats is NIET object gebonden!", vbCritical, "Niet toegestaan"
Range(Target.Address) = ""
End If
End With
End If
 
Is je probleem nog steeds het feit dat hij telkens opnieuw loopt?

Zo ja, zet dan EnableEvents eerst op False.
 
De reden dat je macro niets doet als je iets toevoegt in kolom 7 is dat je test of target.column 2 is of niet. Dus bij wijziging in kolom 7 zal hij hier overheen springen.

Deze macro zal (als er niets relevants voor staat) sowieso weinig doen omdat er geen waarde aan getal wordt toegekend en deze dan dus altijd leeg is.

Waarschijnlijk wil je iets met de zoekfunctie van excel.
In de help staat hier een mooi voorbeeld van:

Code:
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

De Do.. Loop zou je eruit kunnen halen, is alleen van toepassing als de zoekwaarde meerdere keren kan voorkomen.

Bij jou zou het er als volgt kunnen uitzien:

Code:
With Sheets("BBP").Range("BZ21:BZ58")
    Set Getal = .Find(cells(target.row,2).value, lookin:=xlValues)
    If Not getal Is Nothing Then

        MsgBox "De door u gekozen kostenplaats is NIET object gebonden!", bCritical, "Niet toegestaan"

         Application.EnableEvents = False 'hopelijk voorkomt dit triggering van worksheet_change event

         Range(Target.Address) = ""

         Application.EnableEvents = True
    End If
End With
 
Hans,

Bedankt voor je reactie.
Over je eerste punt:
De reden dat je macro niets doet als je iets toevoegt in kolom 7 is dat je test of target.column 2 is of niet. Dus bij wijziging in kolom 7 zal hij hier overheen springen.

Stom he: je bent er zo mee bezig dat je dit gewoon over het hoofd ziet.

Ik dacht trouwens dat je altijd met een If-statement moet beginnen terwijl jij nu een oplossing geeft die met With begint.
Jou oplossing nu perfect werkt en ik, toch wel, een heleboel geleerd hebt.:D
(hij komt inderdaad nu niet meer in een loop)

Nogmaals mijn hartelijke dank.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan