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

Datumnotatie

Status
Niet open voor verdere reacties.

Viggo

Gebruiker
Lid geworden
20 okt 2006
Berichten
26
Hey,

Zit met het volgende probleem:

Ik heb een kalender van 2007. Elke datum bestaat uit een optelsom van telkens 4 andere cellen ( bvb. "dinsdag 13 maart 2007" ). In een aparte cel staat de formule "=VANDAAG()". Met de aangepaste celnotatie komt dat dus - op de juiste dag - ook uit op "dinsdag 13 maart 2007".

Nu is het de bedoeling dat de cel "VANDAAG" haar juiste tegenhanger opzoekt & er dan een vba-procedure begint te lopen. Probleem is echter dat de waarde van de cel met de "VANDAAG" - formule "13/03/2007" geeft, ook al staat in de cel zelf d.m.v. de aangepaste celnotatie "dinsdag 13 maart 2007".

Hoe los ik dit op?

Groeten_____Viggo
 
Ik snap niet helemaal wat je bedoeld.
In de cel waar =VANDAAG() staat (bijv. A1) krijg ik met de juist ingestelde celeigenschappen "dinsdag 13 maart 2007" te zien.
Als ik de waarde opvraag in B1 met =A1, celeigenschappen op standaard, krijg ik de waarde 39154.

Welke Execelversie gebruik je?
 
Jan,

De vba-procedure loopt alle cellen ( =dagen ) van mijn kalender af. Als hij de tegenhanger van cel "VANDAAG" tegenkomt doet hij een aantal dingen ( één en ander kopiëren naar een ander blad en afprinten, maar dat is hier eigenlijk niet belangrijk ). Hij doet dat door de value van elke cel in het gevraagde bereik te vergelijken met de value van de cel "VANDAAG".
De value van alle cellen in het kalenderbereik is zoals "dinsdag 13 maart 2007". De value van de cel "VANDAAG" echter is "13/03/2007" ( om nu even bij 13 maart te blijven ). M.a.w. hij vindt dus de tegenhanger niet en de gewenste actie gaat niet door. Ik zou willen dat hij de INHOUD ( wat ik lees, dus "dinsdag 13 maart 2007" ) van de "VANDAAG"-cel vergelijkt i.p.v. de value ervan.

Ik hoop een beetje duidelijker geweest te zijn.

Groeten________Viggo
 
Sorry, nog vergeten.
Doet niet ter zake denk ik, maar ik werk met Excel 2003.

Groeten_______Viggo
 
Viggo,

Check deze eens:
Code:
Sub maand()
Dim c As Range


For Each c In Range("A1:A26")
    If c.Text = Format(Now, "dddd d mmmm yyyy") Then
        c.Offset(, 1) = "Vandaag"
        Exit For
    End If
Next
    
End Sub
Waarin Range("A1:A26") je bereik is waar je data in staat.

VBA werkt met de standaard engelse datum aanduiding (maand-dag-jaar, 3-24-2007)
Wil je met een opmaak werken moet je een format geven om je datum om te zetten.
 
Laatst bewerkt:
Heren,

Sorry dat het enkele dagen geduurd heeft, maar heb het behoorlijk druk gehad.

Het is nog steeds niet wat ik bedoel (Vba geeft trouwens een foutmelding i.v.m. die geneste "for-next"). Het lijkt mij beter even het bestand bij te voegen (wou dit eerst niet doen omdat het nog een rommeltje & embryonaal is), anders komen we er niet uit, denk ik. Bekijk even de sub "Zoeken" in bijgevoegd bestand. Hij vind niets omdat geen enkele value van eender welke cel in [Wbo] gelijk is aan die van cel M23 (met de formule =VANDAAG() dus). Resultaat is dat de sub "Afprinten" (die nu nog leeg is) niet doorgaat. Wat ik ZIE in M23 is de lange datumnotatie (dddd d mmmm jjjj, vergelijkbaar met de cells in [Wbo]), de value echter geeft de korte datumnotatie (d/mm/jjjj).

Groetjes_____Viggo
 
Denk dat mijn code toch echt werkt (alleen jammer dat ik er twee keer een for in heb gezet :o ).
Probeer deze eens:
Code:
Sub zoeken()
Dim c As Range

    For Each c In Range("L23:L537")
        If c.Text = Format(Now, "dddd d mmmm yyyy") Then
            c.Offset(, 1) = "Vandaag"
            Exit For
        End If
    Next

End Sub

Heb je je cel M23 ook niet nodig :)
Code kan je zelf denk ik wel aanpassen zodat er een andere aktie komt inplaats van dat de cel naast de datum van vandaag de tekst vandaag aangeeft.
 
Laatst bewerkt:
Deze code is nog iets beter.
Loopt niet door je gehele kolom heen maar zoekt direct naar de jusite datum overeenkomst. Scheelt weer wat resources :).

Code:
Sub zoeken()

    Set c = Range("L23:L537").Find(What:=Format(Now, "dddd d mmmm yyyy"), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext)
    
    If Not c Is Nothing Then
        'normaal komt hier je print code
        Range("L" & c.Row).Offset(, 1) = "vandaag"
    Else
        MsgBox "datum van vandaag staat niet in de lijst"
    End If

End Sub
 
Hoi Demeter,

Klopt als een bus. Ik had een beetje problemen met de functie "Format". De Help-uitleg in
Excel is ook niet altijd de meest toegankelijke... :confused:

Maar het is hier wel geknipt voor. Heb ik inderdaad cel M23 ook niet meer nodig.

Hartelijk dank!

Groeten________Viggo :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan