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

x.zoeken vba

Status
Niet open voor verdere reacties.
Beste helpers,

Zou graag toch nog een poging doen een oplossing te vinden van bovenstaande vraag.

heb een deel van mijn bestandje toegevoegd
met nogmaals de vraag wat is het verschil tussen
Code:
Range("c2").Resize(65, 8) = "=XLOOKUP(RC2,Orgineel!R2C2:R65C2,Orgineel!R2C:R65C)"

en deze
Code:
Range("C2").Resize(65, 8) = Application.WorksheetFunction.XLookup(Range("$B2").Value, Sheets("orgineel").Range("$B$2:$B$65"), Sheets("orgineel").Range("C$2:C$65"))

code tabblad 1001
is hier een oplossing voor
Don
 

Bijlagen

Edmoor,

heb je mijn bijlage gezien?

als ik dat omzet naar:

Code:
Range("C2").Resize(65, 8) = Application.WorksheetFunction.XLookup(RC2,Orgineel!R2C2[COLOR="#FF0000"]:[/COLOR]R65C2,Orgineel!R2C[COLOR="#FF0000"]:[/COLOR]R65C))
Dan gaat er nog iets mis in de code waar : staat
 
Laatst bewerkt:
Wat ik al eerder zei, ik heb nog niet de versie waar XLookup in zet en kan het dus niet testen.
Vervang in je omzetting hierboven de R1C1 notatie door A1 notatie.
 
Als je een formule in R1C1 mode in VBA wil gebruiken is het handig om dit aan VBA te laten weten. Verander dus dit:

Code:
Range("c2").Resize(65, 8) = "=XLOOKUP(RC2,Orgineel!R2C2:R65C2,Orgineel!R2C:R65C)"

in dit:

Code:
Range("c2").Resize(65, 8).FormulaR1C1 = "=XLOOKUP(RC2,Orgineel!R2C2:R65C2,Orgineel!R2C:R65C)"
 
# 24 resultaat is gelijk
verandert niks formule blijft in de cellen staan
 
#23

als ik dit doe (hoop dat dit is wat je mij probeert te laten doen)
Code:
Range("C2").Resize(65, 8) = Application.WorksheetFunction.XLookup(Range("b2"), Sheets("orgineel").Range("b2:b65"), Sheets("orgineel").Range("c2:c65"))

dan staat in de cellen de waarde uit tabblad orgineel (wat ik ook graag wil)
alleen staat dit er nu overal het zelfde
8 kolommen en 65 rijen de eerst gevonden waarde
 
Zoals ik al zei, ik kan het niet testen.
Maar waarschijlijk is de oorzaak dat je nog steeds de bereiken niet hebt vast gezet met de $ tekens op de juiste plek.
 
Ga nog wat proberen,
misschien als je de versie hebt waar x.zoeken in zit dat je nog eens voor mij wilt kijken
voor nu heb ik het opgelost met
Code:
Range("c2:j65") = Range("c2:j65").Value
dat werkt prima
blijft alleen knagen waar het zit in de formule :rolleyes:
blijf proberen
bedankt weer voor de hulp.
 
Het zit zo.

Dit plaatst 1 waarde in al de aangegeven cellen, want je berekent 1 waarde:
Code:
Range("C2").Resize(65, 8) = Application.WorksheetFunction.XLookup(Range("b2"), Sheets("orgineel").Range("b2:b65"), Sheets("orgineel").Range("c2:c65"))
Dit plaatst een formule in al diezelfde cellen alsof je die kopieerde vanuit cel C2:
Code:
Range("c2").Resize(65, 8).FormulaR1C1 = "=XLOOKUP(RC2,Orgineel!R2C2:R65C2,Orgineel!R2C:R65C)"
Als je die formule in waarden wil omzetten na berekening dan gebruik je dus:
Code:
Range("c2").Resize(65, 8).FormulaR1C1 = "=XLOOKUP(RC2,Orgineel!R2C2:R65C2,Orgineel!R2C:R65C)"
Range("c2").Resize(65, 8).Value = Range("c2").Resize(65, 8).Value
Maar, je hebt de code geplaatst in het selectionchange event, waardoor de formule bij iedere wijziging in de selectie opnieuw wordt geplaatst en vervangen door waarden. Dat is onzinnig, dan kan je beter de formule gewoon in die cellen laten staan en de code achterwege laten. Waarom wil je eigenlijk steeds die formule laten plaatsen en vervangen door waarden?
 
Het nut van het plaatsen van formules ontgaat mij ook. Gewoon binnen VBA oplossen kan ook. 1 van de mogelijkheden.

Code:
Sub VenA()
  ar = Sheets("Orgineel").Cells(1).CurrentRegion.Offset(1)
  x = [B2].Value
  For j = 1 To 64
    If x > 64 Then x = 1
    c00 = c00 & " " & x
    x = x + 1
  Next j
  Range("C2:J65") = Application.Index(ar, Application.Transpose(Split(Mid(c00, 2))), Array(3, 4, 5, 6, 7, 8, 9, 10))
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan