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

Makro zoekt omhoog ipv omlaag

Status
Niet open voor verdere reacties.

chrisd1

Gebruiker
Lid geworden
1 okt 2008
Berichten
777
Bij het invoeren van onderstaande makro zocht excel het woord "Bezoekadres' in een lijst met geexporteerde gegevens naar beneden, maar bij het gebruik zoekt excel omhoog; waardoor de gewenste aktie natuurlijk niet goed wordt uitgevoerd.

Cells.Find(What:="Bezoekadres", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Range("A21").Select
Selection.Insert Shift:=xlToRight
Range("A25").Select

Wie weet raad??
 
Laatst bewerkt:
Dat is niet helemaal juist.

je gebruikt "CELLS.FIND" Dat betekend: doorzoek alle cellen beginnende bij "A1". De opdracht zoekt dus omlaag vanaf [A1] en vind dan het bovenste antwoord. Het is dus volledig juist vanuit excel gezien (afhankelijk van de context van activecell).
 
Laatst bewerkt:
@wampier
Klopt, wat te doen??
1. de makro zodanig aanpassen, dat hij herbegint waar hij de laatste keer was aangeland
of
2. idem, zodat hij doorgaat totdat de termen, die hij moet zoeken, op zijn?
 
je kunt het "AFTER" attribuut handmatig zetten. Je kunt ook zoeken in een enkele kolom als dat beter werkt (bijvoorbeeld alleen kolom "A").

Ook kun je door alle resultaten lopen. Anders kun je het bereik handmatig verkleinen door het zoek gebied te verkleinen. Bijvoorbeeld:

range([a80:a400]).find... zoekt alleen in de cellen a80:a400. Een resultaat in a40 wordt dan niet gevonden. De beste oplossing is een beetje afhankelijk van hoe vaak de zoekterm voorkomt en de structuur van je sheet. Het is moeilijk om daar zo wat van te zeggen.
 
Het gaat om een geexporteerd bestand van een paar honderd adressen met verschillende kenmerken, waarvan de naam van de instelling in de verkeerde kolom staat.
Je stelt voor om b.v. 'After=ActiveCell' te wijzigen in: 'After=..??
 
After moet de waarde krijgen van de cell waarna de "find" moet gaan zoeken. Als je een klein voorbeeldje kunt maken met niet-gevoelige informatie en wat je precies probeert te bereiken kunnen we misschien gerichter werken.
 
Heb een bestand ontvangen van een paar honderd adressen met veldnamen in kolom A en data in kolom B.
Bestand wil ik importeren in een eigen dBase-programma (PV7.1)
Wil daarom de namen Jan, Piet, Klaas ook in kolom B; dan kan ik kolom B met een andere makro omzetten in een tekengescheiden tekst-bestand en importeren in de bijbehorende velden.
(Kan dat tekstbestand natuurlijk ook wel maken zonder verschuiven van de naam; maar met dit laatste heb ik een kortere/elegantere oplossing, omdat ik dan alleen met kolom B van doen heb).

Het echte bestand heeft ca 20 velden per adres en 'straat' heet daar: 'Bezoekadres'.
 

Bijlagen

  • jan.jpg
    jan.jpg
    84,5 KB · Weergaven: 33
Laatst bewerkt:
Duidelijk, maar je kunt dan toch ook door kolom B lopen en als er in kolom "A" tekst staat en in kolom "B" niet, de tekst uit kolom "A" copieeren? stuk makkelijker dan "find"
 
:thumb:
Voor de rijen tussen de adressen krijg ik telkens een '0', maar die haal ik natuurlijk weg met de makro, waarmee ik kolom B omzet naar het import-txt-bestand.
Nogmaals,
vr gr chrisd1 :d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan