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

als waarde niet gevonden wordt msgbox weergeven.

Status
Niet open voor verdere reacties.

brandernl

Gebruiker
Lid geworden
19 okt 2004
Berichten
445
Van de week heeft HSV me geholpen om deze code goed te krijgen. :D

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Kol As Integer
    Dim rCell As Range
    Dim rRange As Range
    Dim Keuze As String
    
    Kol = ActiveCell.Column
    Keuze = ActiveCell.Value
    
    Application.EnableEvents = False    'elke wijziging (rCell.ClearContents) is weer een event en doet een volgende for loop
    If ActiveCell.Row > 10 Then Exit Sub  'macro moet niet werken buiten invulgebied
    If Kol < 1 Or Kol > 36 Then Exit Sub        'idem

    Set rRange = Range(Cells(11, Kol), Cells(15, Kol)) 'de range met 'voorraad'

'+++++++++++++++++++++++++++++++++++++++
'+ ga zoeken naar de waarde van de keuzecel in de voorraad
'++++++++++++++++++++++++++++++++++++++++++
        For Each rCell In rRange
                If rCell = Keuze Then
                rCell.ClearContents
                Application.EnableEvents = True
                Exit For                  'de waarde kan meer dan een keer voorkomen in de voorraad
                End If
        Next
   Application.EnableEvents = True
End Sub

Bekijk bijlage rooster voor Antonia.xlsm

Nu wil ik als de voorraad 'jannen' of 'piet' of 'klaas' op is, dit verschijnt
MsgBox "Deze dienst is al voldoende gepland", vbExclamation, "Foutje?"

In een 'gewone' macro werkt dit goed:
Code:
Sub Zoek()
Dim rCell As Range
Dim rRange As Range
Dim Keuze As String

Keuze = [A1].Value
Set rRange = [B1:B10]
For Each rCell In rRange
    If rCell.Value = Keuze Then
        MsgBox "gevonden"
    Exit Sub
    End If
    
Next
        MsgBox "niet gevonden"
End Sub

Maar vanwege de change event en de for next loop; waar plaats ik nu die regel code?
 
Zo misschien?

Code:
For Each rCell In rRange
    If rCell.Value = Keuze Then
        MsgBox "gevonden"
    Else
        MsgBox "niet gevonden"
    End IF
Next
 
Ja die werkt prima, als je zo'n macro uitvoert, maar het gaat mij om deze macro:

Private Sub Worksheet_Change(ByVal Target As Range), dus een die reageert op een verandering op een werkblad

Ik raak daar de weg kwijt met de application.enableevent= true en application.enableevent= false; waar moet die code tussen
 
Worksheet_Change werkt alleen op het blad waar deze actief is. Als je dat op een ander werkblad wilt moet je die routine kopiëren naar het andere werkblad.
 
Dat weet ik; ik had blad2 toegevoegd, om het met een 'gewone' macro te testen.

Het gaat om blad 1. Daar kies je middels validatie een jan piet of klaas uit het lijstje; verder naar beneden staat de voorraad aan Jannen enz.
Ik wil dus als er drie jannen gepland zijn (en de voorraad op is) die MsgBox verschijnt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan