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

Worksheet_Change(ByVal Target As Range) werkt alleen bij één cell copy paste

Status
Niet open voor verdere reacties.

sanders1969

Gebruiker
Lid geworden
29 dec 2018
Berichten
243
Ik heb in gebeurtenis: Worksheet_Change(ByVal Target As Range) diverse controles gedaan zoals een iban check en wanneer er cijfers wordt ingevuld in kolom bedrag.
Alleen als ik meteen een gehele rij kopieer en plakt dan vind alleen de controle plaats in de target en niet de resterende kolommen.
Stel je hebt kolom A een iban en kolom B een bedrag.
Als ik twee waardes plakt: "NL84ABNA0478217395" "blabla" dan wordt alleen de target geactiveerd en betreft alleen de iban check en wordt dus blabla als bedrag toegelaten.
Achteraf kan ik dit natuurlijk afvangen maar had gehoopt dat ik alle cellen waar een update plaatsvind een validatiecheck kon doen.
Is er een andere event waar ik dit wel kan afvangen?
 
Check je wel de hele range van target? Als je checks doet op welke kolom moet je target wel in een for each loop zetten
 
Hier even snel een voorbeeld bestand gemaakt, kan niet die van de opdrachtgever opsturen.
Als je de eerste rij selecteert, CTRL C kiest.
Naar cel A5 gaat en kies voor CTRL V dan wordt alleen de iban gecontroleert en bedrag wordt niet meegenomen in validatie.
 

Bijlagen

Dat komt omdat Target.Column dan 1 is.
Controleer dus niet alleen die waarde maar ook Target.Count.
 
Ik heb idd de Target.count welke 2 is maar hoe zet je deze in een loop?
Heb jij toevallig voorbeeld code?
 
Target.Count is het aantal cellen dat de functie doorkrijgt.
 
Klopt maar hoe doorloop ik door de cellen.
Als ik de code die ik in voorbeeld bestand heb geplaatst?
Zodra ie door de If Target.Column = 1 Then is gegaan kan ik het niet afvangen op If Target.Column = 2 Then (target is nog steeds 1)
Ik moet ik een loop creëren.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim intKleurRood As Integer
Dim intKLeurWit As Integer
Dim strRange As String
Dim strValue As String
Dim intMax As Integer

    On Error GoTo Worksheet_ChangeErr
    
    intKleurRood = 3
    intKLeurWit = 2
    
    'blnCellChange = False
    If blnCellChange = True Then Exit Sub
    blnCellChange = True
    
    intMax = Target.Count
    
    With Worksheets("Blad1")
        If Target.Column = 1 Then
            strRange = Chr(64 + Target.Column) & Target.Row
            strValue = .Range(strRange).Value
            If strValue <> "" Then
                If IsValidIBAN(strValue) = False Then
                    .Range(strRange).Interior.ColorIndex = intKleurRood
                Else
                    .Range(strRange).Interior.ColorIndex = intKLeurWit
                End If
            Else
                .Range(strRange).Interior.ColorIndex = intKLeurWit
            End If
        End If
        
        If Target.Column = 2 Then
            strRange = Chr(64 + Target.Column) & Target.Row
            strValue = .Range(strRange).Value
            If strValue <> "" Then
                If Not IsNumeric(strValue) Then
                    .Range(strRange).Interior.ColorIndex = intKleurRood
                Else
                    .Range(strRange).Interior.ColorIndex = intKLeurWit
                End If
            Else
                .Range(strRange).Interior.ColorIndex = intKLeurWit
            End If
        End If
        
        blnCellChange = False
    End With

Worksheet_ChangeErr:
If Err.Number <> 0 Then
    Err.Clear
    blnCellChange = False
End If
End Sub
 
Loop door Target:
Code:
Dim cl As Range
For Each cl In Target
    Debug.Print cl.Row, cl.Column
Next cl
 
Laatst bewerkt:
Ok dan.
Zat nog wel een foutje in en die heb ik aangepast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan