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

Find function werkt niet met kleine cel breedte en verwijzing in de cel

Status
Niet open voor verdere reacties.

Wister

Gebruiker
Lid geworden
22 dec 2009
Berichten
5
Beste allemaal,

Ik wil graag de find function gebruiken in mijn programma. Helaas werkt het nog niet goed.

Mijn wensen:
  • De cel die wordt gezocht bevat een verwijzing (bijv. =L3).
  • De cel die wordt gezocht heeft een breedte van 0,1 waardoor de waarde in de cel niet zichtbaar is.

Met LookIn:=xlFormulas wordt de verwijzing niet gevonden , maar wordt wel de originele cel gevonden indien 0,1 breed.

Met LookIn:=xlValues worden beide cellen gevonden, maar geen van beiden als de breedte staat op 0,1.

Een klein overzichtelijk voorbeeld is als .rar bijgesloten. Hieronder de macro.

Sub ProFindCell()
Dim findCell As Double

'findCell is de te vinden waarde in cel B3
findCell = Range("B3").Value

'CDate wordt gebruikt om de waarde van findcell om te zetten in datumnotatie
Cells.Find(What:=CDate(findCell), After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

MsgBox ActiveCell.Column 'Uiteindelijk wil ik graag het kolomnummer van de gevonden cel.
Exit Sub

End Sub

Heeft iemand een ideetje?

Bedankt! Wister
 

Bijlagen

Is het dit dat je verwachtte?

Cobbe
 
Code:
Sub gevonden()
  msgbox Blad1.Cells.Find(Blad1.range("B3"), , xlValues,xlPart).column
End Sub
 
Nog niet gelukt

Beste Cobbe, beste snb,

Beide methoden zijn niet te gebruiken.

Is het dit dat je verwachtte?

Cobbe

Oplossing die gegeven was is hieronder te zien.

In plaats van handmatig een datum in te voeren in de cel B3 heeft Cobbe cel B3 gevuld met onderstaande code om de datum te onttrekken uit de cel I3.
=TEKST(I3;"dd/mm/jjjj")

De macro was niet veranderd en kon dus nog steeds niet de verwijzing vinden van de te vinden datum.

De cel in B3 moet handmatig worden ingevoerd. Die ingevulde waarde moet dan gezocht worden.

In ieder geval bedankt voor de reply Cobbe! :thumb:

De oplossing van SNB,

Sub gevonden()
msgbox Blad1.Cells.Find(Blad1.range("B3"), , xlValues,xlPart).column
End Sub

Deze methode vindt maar één waarde in de sheet en niet een mogelijke volgende daardoor vindt deze methode de waarde die de gebruiker moet invullen in het veld. Is dat xlNext misschien?
Ook deze methode maakt gebruik van xlValues waardoor de waarden in de velden niet gevonden worden als de waarden niet in de cel passen, dus als er #### tekens komen te staan.

In ieder geval bedankt voor de verkorte manier van schrijven! Daar hebben we altijd wat aan :thumb:


Beiden bedankt en ik hoop dat er nog een oplossing is voor het probleem :D

Nog een fijne dag, Wister
 
Opgelost

Beste Cobbe,

Dankzij jouw code heb ik mijn probleem opgelost! Bedankt! :D

Jouw idee was goed, echter de code cDate moest nog weggehaald worden uit de macro.

Dus de te zoeken cellen een aangepaste format meegeven in de eigenschappen "dd-mm-jjjj".
En de verwezen cellen aanroepen met =tekst(I3; "dd-mm-jjjj").

Dan zoekt de code naar de tekst "01-01-2009" en vindt die in de cel met de format =tekst(I3; "dd-mm-jjjj"). Het voordeel van deze oplossing is dat de datum met de =tekst(I3; "dd-mm-jjjj") format niet weggaat als de cel kleiner wordt gemaakt, waardoor die ook te vinden is als de cel een grootte heeft van 0,1mm.

Ik hoopte eigenlijk op een makkelijkere oplossing. Maar dit werkt ook.

Bedankt en groeten. Wister
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan