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

VLOOKUP in macro, werkt niet. Eigenschap VLOOKUP van klasse Worksheetfunction :(

Status
Niet open voor verdere reacties.

Gert Bouwmeeste

Verenigingslid
Lid geworden
28 nov 2007
Berichten
828
Ik heb een macro die de waarde van een cel moet opzoeken in kolomA van een ander tabblad. Als de waarde niet gevonden wordt, moet de betreffende cel gekleurd worden. Zeg maar "voorwaardelijke opmaak" maar dan via een macro.

Code:
Sub TestKleuren()
'
' TestKleuren Macro
'

Set UsedRange = Worksheets("Vergelijking ME-KTA").Range("A6:A1210")
Set ZoekRange = Worksheets("ME Beheertabel DL").Range("A1:A10000")

For Each Cl In UsedRange
    If ActiveCell.Value <> """" Then
        [COLOR=#ff0000]If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(ActiveCell.Value, ZoekRange, 1, False)) Then[/COLOR]
        
            With Selection.Font
                .FontStyle = "Vet"
                .Color = 255                
            End With
            With Selection.Interior
                .Color = 16751381
            End With
        End If
    End If
Next
End Sub

De macro loopt stuk op
Code:
[COLOR=#ff0000]If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(ActiveCell.Value, ZoekRange, 1, False)) Then[/COLOR]

met de melding:
Fout 1004 tijdens uitvoering:
Eigenschap VLOOKUP van klasse Worksheetfunction kan niet worden opgehaald

Wat doe ik fout?

Dank alvast voor de hulp!
 
let op Usedrange kan je niet zomaar gebruiken als variabele, die term bestaat binnen VBA
Code:
Sub TestKleuren()
'
' TestKleuren Macro
'

    Set Gebruikrange = Worksheets("Vergelijking ME-KTA").Range("A6:A1210")
    Set ZoekRange = Worksheets("ME Beheertabel DL").Range("A1:A10000")
    With Gebruikrange
        .Font.Color = 0
        'hier ook de andere zaakjes terugzetten
    End With
    
    For Each cl In Gebruikrange.Cells
        With cl
            If Len(cl.Value) Then
                b = .Value
                a = Application.VLookup(.Value, ZoekRange, 1, False)
                If VarType(a) = vbError Then
                    With .Font
                        .FontStyle = "Vet"
                        .Color = 255
                    End With
                    .Interior.Color = 16751381
                End If
            End If
        End With
    Next
End Sub
 
Ipv een WorksheetFunction kan je ook Find gebruiken.

Code:
Sub TestKleuren()
'
' TestKleuren Macro
'

Set UsedRange = Worksheets("Vergelijking ME-KTA").Range("A6:A1210")
Set zoekrange = Worksheets("ME Beheertabel DL").Range("A1:A10000")

For Each cl In UsedRange
    If cl.Value <> """" Then
    Set f = zoekrange.Find(cl)
        If f Is Nothing Then
            With cl.Font
                .FontStyle = "Vet"
                .Color = 255
            End With
            cl.Interior.Color = 16751381
        End If
    End If
Next cl
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan