• 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 werkt niet

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.435
Hallo lezers.
Via een query worden gegevens met een datum uit een ander bestand gehaald.
Excel ziet de datum echter niet als datum.
Om er een datum van te maken kun je de kolom met 1 vermenigvuldigen en daarna de celnotatie aanpassen.
Of je kunt tekst naar kolommen converteren en dan kolom data formaat op DMY zetten.

Dit werkt beide prima, echter als ik deze handeling opneem in een macro dan werkt de macro niet geheel.
Voor de maand april gaat het goed maar voor de maand mei niet.
Wie weet wat er waar misgaat?
 
hoi popipipo

raar dat jou macro1 niet werkt:eek:

als je hebt gevonden waarom het niet werkte hoor ik het graag

is dit een redelijk alternatief?
Code:
Sub datumWaarde()
Dim teller As Integer
teller = 2
    Do Until Cells(teller, 1) = ""
        Cells(teller, 1) = DateValue(Cells(teller, 1))
        teller = teller + 1
    Loop
End Sub

groet Sylvester
 
Hallo Sylvester

Dit lijkt een redelijk alternatief.
Maar hoe met ik hem aanpassen als ik niet kolom A maar in bijvoorbeeld kolom C de datum heb staan?

Ik zit zelf te denken dat het probleem een taal kwestie is.
Want apr is zowel in ned als eng de afkorting voor april
mei echter is nederlands en in het engels zou het may zijn.

Maar of dit echt het probleem is weet ik niet.
 
hoi PP
ga eerst in de omtezetten kolom staan, voer dan deze macro uit

Code:
Sub datumWaarde()
    Dim teller As Integer
    Dim kolom As Integer
    kolom = ActiveCell.Column
    teller = 2
    Do Until Cells(teller, kolom) = ""
        Cells(teller, kolom) = DateValue(Cells(teller, kolom))
        teller = teller + 1
    Loop
End Sub

groet
 
nog een keer een aanpassing:

selecteer de cellen waarop de macro moet werken

en dan deze macro starten

Code:
Sub datumWaarde()
     For Each d In Selection
           d.Value = DateValue(d)
     Next d
End Sub

groet
 
Dag Popi,

Hier nog een oplossing. Open de bijlage en doe blad macro 1.

Gegroet,

Axel.
 

Bijlagen

  • dattijdtest.zip
    82,3 KB · Weergaven: 26
Hallo Sylvester

Je eerste oplossing heb ik vandaag op een andere pc uitgeprobeerd.
Het ging om een bestand van ongeveer 20.000 regels.
Het is een trage pc en duurde iets langer en daarna schoot hij in de fout.

Ik neem aan dat het aan de trage pc ligt

Je laatste oplossing echter schiet ook bij mij de fout in als er meer dan 15300 regels zijn.
Is hier een oplossing voor?
 
hoi Willem

staat op regel 15300 wel iets dat in een datum veranderd kan worden?

of is dat de laatste?

selecteer je een kolom tegelijk of meerdere?

groet Sylvester
 
Pas wel op dat Integers hun grenzen hebben, je moet Long gebruiken. Integers gaan tot 32700 en nog wat.

Wigi
 
Alle tot nu toe gegeven oplossingen werken niet geheel.
Bijgaand het bestand met de datums die omgezet moeten worden.

Het gaat om het volgende.
Via een query wordt uit een ander bestand gegevens gehaald dagelijks varierend tot soms wel 600 regels per dag.
Hier wordt een draaitabel van gemaakt per kwartaal.
Uit deze draaitabel moet weer een berekening gemaakt worden per dag.
Om de goede berekening voor de goede dag te maken, maak ik weer gebruik van vertikaal zoeken op datum.
De datum moet dus uit de draaitabel gehaald worden.
Maar aangezien Excel dit niet als datum ziet krijg je dus een foutmelding.
 
hoi

als het om blad1 gaat
werkt macro5 prima als je dit had gelezen en toe gepast
Pas wel op dat Integers hun grenzen hebben, je moet Long gebruiken. Integers gaan tot 32700 en nog wat.

Wigi

dus:
Code:
Sub Macro5()
    Dim teller As Integer
    Dim kolom As Integer
    kolom = ActiveCell.Column
    teller = 2
    Do Until Cells(teller, kolom) = ""
        Cells(teller, kolom) = DateValue(Cells(teller, kolom))
        teller = teller + 1
    Loop
End Sub

wordt

Code:
Sub Macro5()
    Dim teller As Long
    Dim kolom As Integer
    kolom = ActiveCell.Column
    teller = 2
    Do Until Cells(teller, kolom) = ""
        Cells(teller, kolom) = DateValue(Cells(teller, kolom))
        teller = teller + 1
    Loop
End Sub

zie je het verschil?

bij mij doet hij er ongeveer 15 seconde over (p4 2gh)
groet
 
Hallo Sylvester,

De oplossing van jou (en dus eigenlijk van Wigi) werkt inderdaad goed.

Hierbij dank voor ieder en voor alle gegeven oplossingen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan