Eigenschap VLookup van klasse WorksheetFunction kan niet worden opgehaald

Status
Niet open voor verdere reacties.

avsavs

Gebruiker
Lid geworden
11 aug 2016
Berichten
5
Hallo,

Ik probeer in een tabel op een ander tabblad een naam te vinden om vervolgens uit de 12de kolom de uren contractuitbreiding op te halen. Hierbij krijg ik foutmelding 1004 'Eigenschap VLookup van klasse WorksheetFunction kan niet worden opgehaald'.
Ik heb (als beginner) geen idee wat er niet goed in gaat. De naam wordt juist opgehaald, maar bij CU_1 = VLookup etc gaat het fout. Hieronder mijn code:

Sub CU_Automatisch()

Dim Naam As String
Dim Lookup_Range As Range
Dim CU_1 As Single

Sheets("Capaciteit JA 4-18").Select
Range("B60").Select
Naam = ActiveCell.Value

Set Lookup_Range = Sheets("MDWOV_JA").Range("B4:AT151")

CU_1 = Application.WorksheetFunction.VLookup(Naam, Lookup_Range, 12, False)

Sheets("Capaciteit JA 4-18").Select
Range("F60").Select
ActiveCell.Value = CU_1

End Sub

Weet iemand wat er fout gaat?
 
Probeer dit eens:

Code:
Sub CU_Automatisch()
Sheets("Capaciteit JA 4-18").Range("F60").Value = Application.WorksheetFunction.VLookup(Sheets("Capaciteit JA 4-18").Range("B60").Value, Sheets("MDWOV_JA").Range("B4:AT151"), 12, False)
End sub
 
Laatst bewerkt:
@SjonR,
Mooie onliner:thumb: Werkt bij alleen als ik .WorksheetFunction er tussenuit haal. Hier zit waarschijnlijk ook het probleem van de TS.

Als alternatief
Code:
Sub VenA()
  Dim r As Range
  Set r = Sheets("MDWOV_JA").Columns(2).Find(Sheets("Capaciteit JA 4-18").Range("B60").Value, , xlValues, xlWhole)
  Sheets("Capaciteit JA 4-18").Range("F60") = IIf(r Is Nothing, "", r.Offset(, 11).Value)
End Sub
 
Vreemd, want bij mij werkt het prima. Jij hebt toch ook Office 2016?
 

Bijlagen

  • Vlookup.xlsm
    20,3 KB · Weergaven: 180
Bijzonder nu werkt het zowel in jouw bestandje als in mijn eigen bestandje:eek:

Blijft wel staan dat je .WorksheetFunction er tussenuit mag halen.;)
 
Dat van die worksheetfunction is weer een goede les. Verder moet ik opmerken dat die Vlookup functie wel vaker vreemd gedrag vertoont.

Thanks!
 
De alternatief van @VenA zal niet werken als 'r' is nothing.

De methode 'IIf' evalueert zowel de true als falsepart.
De methode van @SjonR genereert "N/B" wat niet zo erg is al de foutmelding van @VenA.

Alternatief.
Code:
Sub hsv()
Dim r
With Sheets("Capaciteit JA 4-18")
r = Application.Match(.Range("B60").Value, Sheets("MDWOV_JA").Columns(2), 0)
  If IsError(r) Then
     .Range("F60") = ""
   Else
     .Range("F60") = Sheets("MDWOV_JA").Cells(r, 13)
  End If
End With
End Sub
Code wat langer, snel, maar wel goed.
 
Dacht ik al maar niet getest. Daarnaast wordt de hele IIF constructie over het algemeen afgeraden:d

Maar waarom
Code:
If IsError(r) Then
     .Range("F60") = ""
   Else
     .Range("F60") = Sheets("MDWOV_JA").Cells(r, 13)
  End If

ipv
Code:
If IsError(r) Then .Range("F60") = "" Else .Range("F60") = Sheets("MDWOV_JA").Cells(r, 13)
 
Zulk schrijfwijze houd ik niet van (erg onduidelijk).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan