Vraag


Acties:
  • 0 Henk 'm!

  • Haghina
  • Registratie: Juni 2013
  • Laatst online: 17-11-2023
Nu al een hele tijd aan het klooien:
ik loop vast op de dikgedrukte regel. Dit komt omdat hier gezocht wordt in de kolom waar verwijzingen staan naar een adressentabblad. Het lukt me niet om de find functie "door de verwijzing heen" te laten kijken en te zoeken op de waarde van de verwijzing.

Wanneer ik gewoon de adreswaarde in kolom A invul dan werkt de zoekfunctie wel.

Kortom hoe kan ik de zoekfunctie laten werken als het zoekbereik uit verwijzingen naar cellen bestaat? Mijn vermoeden is dat ik iets niet goed doe met de variabelen definities....


Dim Transporteur As String
Dim finalrow As String
Dim finalrow2 As String
Dim I As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer

finalrow = Sheets("Voorraadcontracten").Range("A2").End(xlDown).Row 'definieer het aantal nieuwe contracten
finalrow2 = Sheets("SaldoVoorraadcontracten").Range("A2").End(xlDown).Row 'definieer het aantal bestaande transporteurs met een contract


For I = 3 To finalrow

Transporteur = Sheets("Voorraadcontracten").Cells(I, 1)
j = Sheets("SaldoVoorraadcontracten").Range("A:A").Find(Transporteur).Row
l = Sheets("SaldoVoorraadcontracten").Range("A:AA").Find("n/b").Column

Beste antwoord (via Haghina op 13-04-2018 09:47)


  • breew
  • Registratie: April 2014
  • Laatst online: 23:44
Haghina schreef op vrijdag 13 april 2018 @ 09:27:
Dank voor het meedenken en de feedback op mijn niet handig gekozen variabelen.
Helaas lost het het probleem nog niet op...

De waarde voor "Transporteur" wordt goed geladen, met en zonder toevoegen van value;
: Transporteur : "Transporteur 6" : String
Mi komt dit doordat in deze cel nog geen verwijzing staat. Deze staat pas op de sheet Saldovoorraadcontracten.

wanneer ik hover over de opdrachtregel:
j = Sheets("SaldoVoorraadcontracten").Range("A:A").Find(Transporteur).Row

Dan is Transporteur geladen met de waarde "Transporteur 6" in dit geval, er wordt echter geen waarde gevonden in de opgegeven Range. In deze Range staan de verwijzingen in de cel naar een adressenbestand. Dus in de cel wordt de waarde weergegeven maar de formulebalk laat een verwijzing zien.

Mijn idee is dat ik moet laten zoeken naar de waarde in de range. Dit lukt me echter niet om als opdracht weer te geven in de regel j = ...
Heb dit al geprobeerd met Find.Value, Find(Transporteur).value, etc...
Als je zoekwaarde voortkomt uit een formule/verwijzing, dan moet je expliciet opgeven dat je naar waarden zoekt.. Dat doe je door het optionele LookIn-argument in te stellen op xlValues, ipv de default xlFormulas

bert!!
B2 is een verwijzing naar A2. Als in nu 'standaard' zoek naar bert in kolom B, krijg ik geen match, maar met:
Visual Basic:
1
2
3
4
5
6
Option Explitit

Sub vind()
  Dim lonRijnummer As Long
  lonRijnummer = Range("B:B").Find(What:="bert", LookIn:=xlValues).Row
End Sub


lukt het wel!

Was dat wat je bedoelde?

Alle reacties


Acties:
  • +1 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 23:44
Volgens mij probeer je een celwaarde toe te kennen aan de variabele string "Transporteur?
Dan moet er .value achter...
Visual Basic:
1
Transporteur = Sheets("Voorraadcontracten").Cells(I, 1).Value


lustellers al integer declareren gaat trouwens mis bij veel rijen. Ga liever voor Long

I (hoofdletter i) en l (kleine L) door elkaar heen gebruiken als variabele-naam is trouwens een recept voor verwarring!

Mijn best practice is om alleen lustellers een één-letter-naam te geven (eigenlijk altijd i, j, k, m, n, w, x, y en/of z) . Alle andere variabelen krijgen een betekenisvolle naam (in CamelCase), met een prefix in Hungarian (of iets wat er op lijkt ;-) ). dat scheelt werk bij het debuggen...

[ Voor 61% gewijzigd door breew op 12-04-2018 14:18 ]


Acties:
  • 0 Henk 'm!

  • Haghina
  • Registratie: Juni 2013
  • Laatst online: 17-11-2023
Dank voor het meedenken en de feedback op mijn niet handig gekozen variabelen.
Helaas lost het het probleem nog niet op...

De waarde voor "Transporteur" wordt goed geladen, met en zonder toevoegen van value;
: Transporteur : "Transporteur 6" : String
Mi komt dit doordat in deze cel nog geen verwijzing staat. Deze staat pas op de sheet Saldovoorraadcontracten.

wanneer ik hover over de opdrachtregel:
j = Sheets("SaldoVoorraadcontracten").Range("A:A").Find(Transporteur).Row

Dan is Transporteur geladen met de waarde "Transporteur 6" in dit geval, er wordt echter geen waarde gevonden in de opgegeven Range. In deze Range staan de verwijzingen in de cel naar een adressenbestand. Dus in de cel wordt de waarde weergegeven maar de formulebalk laat een verwijzing zien.

Mijn idee is dat ik moet laten zoeken naar de waarde in de range. Dit lukt me echter niet om als opdracht weer te geven in de regel j = ...
Heb dit al geprobeerd met Find.Value, Find(Transporteur).value, etc...

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 23:44
Haghina schreef op vrijdag 13 april 2018 @ 09:27:
Dank voor het meedenken en de feedback op mijn niet handig gekozen variabelen.
Helaas lost het het probleem nog niet op...

De waarde voor "Transporteur" wordt goed geladen, met en zonder toevoegen van value;
: Transporteur : "Transporteur 6" : String
Mi komt dit doordat in deze cel nog geen verwijzing staat. Deze staat pas op de sheet Saldovoorraadcontracten.

wanneer ik hover over de opdrachtregel:
j = Sheets("SaldoVoorraadcontracten").Range("A:A").Find(Transporteur).Row

Dan is Transporteur geladen met de waarde "Transporteur 6" in dit geval, er wordt echter geen waarde gevonden in de opgegeven Range. In deze Range staan de verwijzingen in de cel naar een adressenbestand. Dus in de cel wordt de waarde weergegeven maar de formulebalk laat een verwijzing zien.

Mijn idee is dat ik moet laten zoeken naar de waarde in de range. Dit lukt me echter niet om als opdracht weer te geven in de regel j = ...
Heb dit al geprobeerd met Find.Value, Find(Transporteur).value, etc...
Als je zoekwaarde voortkomt uit een formule/verwijzing, dan moet je expliciet opgeven dat je naar waarden zoekt.. Dat doe je door het optionele LookIn-argument in te stellen op xlValues, ipv de default xlFormulas

bert!!
B2 is een verwijzing naar A2. Als in nu 'standaard' zoek naar bert in kolom B, krijg ik geen match, maar met:
Visual Basic:
1
2
3
4
5
6
Option Explitit

Sub vind()
  Dim lonRijnummer As Long
  lonRijnummer = Range("B:B").Find(What:="bert", LookIn:=xlValues).Row
End Sub


lukt het wel!

Was dat wat je bedoelde?

Acties:
  • 0 Henk 'm!

  • Haghina
  • Registratie: Juni 2013
  • Laatst online: 17-11-2023
TOP!!!!
Nu werkt het, heerlijk, hartelijk dank! Weer wat geleerd!

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 23:44
Haghina schreef op vrijdag 13 april 2018 @ 09:46:
TOP!!!!
Nu werkt het, heerlijk, hartelijk dank! Weer wat geleerd!
Graag gedaan.
Altijd fijn als iets werkt :+

[ Voor 3% gewijzigd door breew op 13-04-2018 09:48 ]

Pagina: 1