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

Validatie updaten met VBA

Status
Niet open voor verdere reacties.

wieter

Terugkerende gebruiker
Lid geworden
26 jun 2009
Berichten
1.128
Ik heb geprofiteerd van de kennis van SNB(waarvoor dank).
Ik heb 2 validatielijsten, die zich telkens updaten.
Dus telkens als een naam gekozen wordt, komt die naam niet meer voor in de validatielijst.
Tot zover alles OK.

In de code heb ik echter een:"On Error Resume Next" nodig.
Anders krijg ik een foutmelding, van zodra alle namen opgebruikt zijn.
De rode regels in de code geven de foutmelding.
Die "On Error-regel" is echter maar een lapmiddel.
Wat moet er veranderen in de code, zodat die "On Error-regel" niet meer nodig is?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Cells(4, 2).Resize(7)) Is Nothing Then
        n = Application.Transpose(Blad2.Cells(1, 1).CurrentRegion)
        s = Target.Offset(3 - Target.Row).Resize(8)
        
        For t = 1 To 8
        If s(t, 1) <> "" Then n = Filter(n, s(t, 1), 0)
        Next
         
        Blad2.Cells(1, 3).CurrentRegion.ClearContents
        If UBound(n) > -1 Then Blad2.Cells(1, 3).Resize(UBound(n) + 1) = Application.Transpose(n)
        [COLOR="#B22222"]Intersect(Target.EntireColumn, Target.SpecialCells(xlCellTypeSameValidation)).Validation.Modify 3, , , "=Blad2!" & Blad2.Cells(1, 3).Resize(UBound(n) + 1).Address[/COLOR]
    End If
    
    If Not Intersect(Target, Cells(4, 4).Resize(7)) Is Nothing Then
        n = Application.Transpose(Blad2.Cells(1, 5).CurrentRegion)
        s = Target.Offset(3 - Target.Row).Resize(8)
        
        For t = 1 To 8
        If s(t, 1) <> "" Then n = Filter(n, s(t, 1), 0)
        Next
        
        Blad2.Cells(1, 7).CurrentRegion.ClearContents
        If UBound(n) > -1 Then Blad2.Cells(1, 7).Resize(UBound(n) + 1) = Application.Transpose(n)
        [COLOR="#FF0000"]Intersect(Target.EntireColumn, Target.SpecialCells(xlCellTypeSameValidation)).Validation.Modify 3, , , "=Blad2!" & Blad2.Cells(1, 7).Resize(UBound(n) + 1).Address[/COLOR]
    End If
Application.ScreenUpdating = True
End Sub
 

Bijlagen

  • Validatie updaten met VBA.xlsm
    27,2 KB · Weergaven: 51
zo?

Code:
If UBound(n) > -1 Then
          Blad2.Cells(1, 3).Resize(UBound(n) + 1) = Application.Transpose(n)
          Intersect(Target.EntireColumn, Target.SpecialCells(xlCellTypeSameValidation)).Validation.Modify 3, , , "=Blad2!" & Blad2.Cells(1, 3).Resize(UBound(n) + 1).Address
        End If
 
BINGO VenA!
Dat was het.
Super bedankt, groeten Wieter.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan