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

Macro voor zoeken naar de datum

Status
Niet open voor verdere reacties.

jakko1972

Gebruiker
Lid geworden
28 jul 2003
Berichten
26
Ik ben bezig met het maken van een rosster. Nu wil ik rapportages maken. Weekrapportages is mij gelukt. Nu wil ik maandrapportages via een macro laten maken. Mijn probleem is dat ik 1-jan-2003 niet via een zoek commando kan vinden. Als ik 1 januari kan vinden kan ik denk ik de rest ook wel vinden. Heeft iemand een oplossing voor mij. Ik heb al veel geprobeerd maar kom er niet uit.
Cell.find dacht ik, maar nee.

Om een voorstelling te kunnen maken van mij vraag heb ik een uitgeklede file toegevoegd. Helaas ben ik qua programeren niet ver omdat het vinden van de datum in mijn ogen het begin is.

Alvast bedankt voor je hulp.

Jakko
 
Je "uitgeklede" file is waarschijnlijk te groot, mag max 102400 bytes zijn.

Misschien dat je met deze macro wat verder komt.
D.m.v. onderstaande macro wordt de cel naast de gevonden waarde geselecteerd.
De datum die je zoekt vul je in in de Inputbox.
De macro zoekt alleen op Blad 1, dit kan je uiteraard veranderen.

Sub test()
Dim Datum As Date
Dim c As Range
Datum = InputBox("Geef uw datum op")
With Sheets("Blad1").Range("c:c")
Set c = .Find(vraag, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
c.Offset(0, 1).Select
Else
MsgBox "Niet gevonden"
End If
End With
End Sub

Maak je gebruik van de standaard-datumopmaak dan moet de macro in de formules zoeken ipv in de waarden
je moet dan xlValues veranderen in xlFormulas.
 
Hoi Jakko,

De oplossing lijkt mij omslachtig.

Je weet de eerste datum in je rooster, deel dat aantal door 7 * het aantal rijen tussen de weken en je weet de rij waar je moet zoeken. De kolom vind je door de rest van de deling te vermenigvuldigen met het aantal kolommen tussen de dagen.

De laatste dag van de maand kun je bepalen door de formule zelfde.dag(datum(jaar(A5);maand(A5);1);1)-1, waardbij A5 de datum is.

Dat is niet zo moeilijk, maar dan komt de wijze van presenteren. Wat wil je het venster verschuiven of ergens anders een soortgelijke tabel opbouwen of ........

Jeroen
 
Bijna de oplossing

Huijb,

Dit zit er goed uit, ik begrijp alleen 1 ding niet. Welke datum ik ook invul hij gaat altijd naar 1 jan 2003. Zelfs als ik alleen 31 invul. Is het ook mogelijk om bijvoorbeeld 1 feb 2003 te vinden of waar zoekt hij eigenlijk op.
 
Jeroen,

Mijn probleem is dat als ik een zoek functie doe excel de datum niet herkent. Weergegeven wordt 01-jan-03. Als ik in een msgbox die cel laat weergeven staat er 29-12-1899. Daarnaast wil ik niet ieder jaar de formule aanpassen. Of ik begrijp jou opmerking niet.
 
Hoi Jakko,

De manager was zeker erg blij toen ie Office (19)02 voor een prikkie op de markt kon krijgen!

Ik heb de volgende formules:

CO20 is de te vinden datum (22-4-03)
CO21=WEEKDAG(DATUM(JAAR(CO20);1;1))-2 (2)
CO22=CO10-DATUM(JAAR(CO20);1;1)+CO21 (113)
CO23=REST(CO22;7) (1)
CO24=GEHEEL(CO22/7) (16)

Aantal rijen = 25; aantal kolommen is 13.
CO26=ADRES(RIJ(B13)+CO24*25;KOLOM(B13)+CO23*13) ($O$413)
CO27=INDIRECT(CO26)

De te zoeken datum staat dus in veld O413. Ik heb de formule erg uit elkaar getrokken zodat duidelijk is wat er gebeurt. meer complex is de formule:

=ADRES(RIJ(B13)+GEHEEL((CO20-DATUM(JAAR(CO20);1;1)+WEEKDAG(DATUM(JAAR(CO20);1;1))-2)/7)*25;KOLOM(B13)+REST((CO20-DATUM(JAAR(CO20);1;1)+WEEKDAG(DATUM(JAAR(CO20);1;1))-2);7)*13)

Nu nog die datum 29-12-1899, volgens mij is staat de celopmaak op mm-dd-jjjj en is de waarde van de berekening -2 (1-1-1900 - 2 = 29-12-1899)

Nu heb je pas de datum gevonden die je zocht. Dat is niet je wens, want je wilt een maandoverzicht maken, toch. Dan heb je de eerste dag van die maand nodig en de laatste dag van die maand (een lusje maaken van dag 1 tot einde maand en op blad2 afdrukken)

Succes

Jeroen
 
Sorry mijn fout verander;
Set c = .Find(vraag, LookIn:=xlValues, LookAt:=xlWhole)
in
Set c = .Find(datum, LookIn:=xlValues, LookAt:=xlWhole)
 
Ik kom niet verder

Michel,

Ik zit vast. Natuurlijk had ik begrepen dat vraag datum had moeten zijn.
Het principe is ook goed. Ik moet een datum in vullen en de cel waar deze datum in staat wordt de active cel.

Echter hoe ik de datum ook invul of hij gaat bij willekeurig invullen naar 1 jan 2003 terwijl ik deze datum bijv. niet ingevuld heb of hij heeft niets gevonden.

Ik kom er nog niet uit. Kan je me helpen dat ik welke datum ik ook invul hij deze vind. Desnoods alleen 1 januari

Alvast bedankt,

Jakko
 

Bijlagen

Jakko de reden waarom de datum niet wordt gevonden ligt aan het feit dat je geen datum gebruikt. In een cel waar je een datum hebt staan wordt de waarde ergens anders vandaan gehaald. In cel BB38 staat bv. wel 10-jan-03 maar er staat in formule in, en wel AO38+1. Dat is de reden waarom het niet wordt gevonden. Als je nu AO38+1 weghaald en je typt de datum 10-jan-03 in de cel wordt het gewoon gevonden door de zoekfunctie van Excel zelf. Misschien dat je nu een stap verder bent.
 
Hoi Jacco,

Volgens mij volstaat de volgende macro om de gewenste datum te vinden:

Sub test()
Rij=Cells(24,93):'CO24
Kol=Cells(23,93):'CO23

WorkSheets("Blad1").Range("B13").Offset(Rij,Kol).Select
End Sub

Jeroen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan