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

Datums omdraaien ?

Status
Niet open voor verdere reacties.

Willem Blaas

Gebruiker
Lid geworden
30 aug 2006
Berichten
253
Geacht forum

bij het vullen van een database middels div formulieren wat overigens perfect gaat
loop ik tegen een datum-probleem aan.

wanneer " opname_dat_1 " vul met de de datum bv 05-03-2009 zet die t neer in betreffende cel als 03-05-2009 net andersom dus , wil ik t goed hebben dan moet eerst de maand invullen en dan komt t goed,

moet ik misschien bij "dim" iets meegeven van een format ofzo ?

doe ik date ipv variant dan gooit ie m eruit vanwege een vooringesteld "on error" (bovenaan)

er is wel mee te leven maar het is excel dus kan t anders.

gaarne uw mening hierover,

in de bijlage een stukje van een vrij uitgebreid programma wat wel loopt op dit probleem na

met vr gr willem blaas
 

Bijlagen

Binnen VBA moet je datums via de amerikaanse notatie invoeren (mmddyyyy).
Best kan je werken via de VBA functie DateSerial waarbij een correcte datum wordt samengesteld dmv het jaar, de maand en de dag.
Om foutieve input te vermijden is het misschien beter te werken met een Calender control op een userform ipv textuele invoer. Ga je toch voor de textuele invoer, kan je beter de invoer van de dag, maand en jaar apart opvragen en daarna samenvoegen met die dateserial formule.
 
Binnen VBA moet je datums via de amerikaanse notatie invoeren (mmddyyyy).
Best kan je werken via de VBA functie DateSerial waarbij een correcte datum wordt samengesteld dmv het jaar, de maand en de dag.
Om foutieve input te vermijden is het misschien beter te werken met een Calender control op een userform ipv textuele invoer. Ga je toch voor de textuele invoer, kan je beter de invoer van de dag, maand en jaar apart opvragen en daarna samenvoegen met die dateserial formule.

voorlopig even , bedankt
 
Willem Blaas,

Onder staande komt uit een andere vraag, daar was ook een probleem met de datum.
Ginger had de volgende oplossing hier voor.
Maak in de module van het formulier bij 'Private Sub Ok_button_Click()' één hele kleine aanpassing...
Code:
Cells(lrij + 1, "G").Value = [COLOR="RoyalBlue"]DateValue[/COLOR](Ingeven_van_werkaanvragen.Txt_datum)
Dan wordt voortaan direct het format van de cel gebruikt.
Misschien dat je wat aan deze informatie heb?
 
Willem Blaas,

Onder staande komt uit een andere vraag, daar was ook een probleem met de datum.
Ginger had de volgende oplossing hier voor.

Misschien dat je wat aan deze informatie heb?

heb de regel boven en onder de "dim" gezet maar hij roept dat het argument niet optioneel is ?? mss toch iets verkeerd gedaan ?
 
Willem Blaas,

Ik heb het Blauwe stukje erbij gezet en nu geef hij de datum 6-3-09 weer als 6-3-09

Code:
Sub invoer_meterstanden()
   ' On Error GoTo foutmelding

    ''"copy" zet eerst de waarden tot nu toe weg ivm evt foutmelding
    ''gaat het fout dan worden de oude waarden teruggezet
    
    'Application.Run "copy1"
    
    Dim bijna_vol As Variant
    Dim contr1 As Variant
    Dim contr2 As Variant
    
    Set contr1 = Worksheets("GAS").Range("H1")
    Set contr2 = Worksheets("GAS").Range("I1")
   
    Dim opname_dat_1  As Variant
    Dim opname_dat_2 As Variant
    
    Sheets("RES").Select
    opname_dat_1 = InputBox("Geef opname-datum", "Invoer")
    If opname_dat_1 = "" Then GoTo buitenbroek
    Sheets("GAS").Select
    Range("C3:BG3").Select
    Selection.Find(What:="%^%", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
    ActiveCell.FormulaR1C1 = [COLOR="Blue"]DateValue[/COLOR](opname_dat_1)
    ActiveCell.Cells.Select
    ActiveCell.Cells.EntireColumn.AutoFit
    Range("A1").Select
End Sub
 
Laatst bewerkt:
Willem Blaas,

Ik heb het Blauwe stukje erbij gezet en nu geef hij de datum 6-3-09 weer als 6-3-09

Code:
Sub invoer_meterstanden()
   ' On Error GoTo foutmelding

    ''"copy" zet eerst de waarden tot nu toe weg ivm evt foutmelding
    ''gaat het fout dan worden de oude waarden teruggezet
    
    'Application.Run "copy1"
    
    Dim bijna_vol As Variant
    Dim contr1 As Variant
    Dim contr2 As Variant
    
    Set contr1 = Worksheets("GAS").Range("H1")
    Set contr2 = Worksheets("GAS").Range("I1")
   
    Dim opname_dat_1  As Variant
    Dim opname_dat_2 As Variant
    
    Sheets("RES").Select
    opname_dat_1 = InputBox("Geef opname-datum", "Invoer")
    If opname_dat_1 = "" Then GoTo buitenbroek
    Sheets("GAS").Select
    Range("C3:BG3").Select
    Selection.Find(What:="%^%", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
    ActiveCell.FormulaR1C1 = [COLOR="Blue"]DateValue[/COLOR](opname_dat_1)
    ActiveCell.Cells.Select
    ActiveCell.Cells.EntireColumn.AutoFit
    Range("A1").Select
End Sub

zo te zien gaat het goed , maar hij moet verder maar dat komt nog wel , voorlopig hartstikke bedankt, ik kom erop terug en pr week-end
 
Willem Blaas,

zo te zien gaat het goed , maar hij moet verder maar dat komt nog wel , voorlopig hartstikke bedankt, ik kom erop terug en pr week-end
Ik moest wel enkele regels uit schakelen om de macro te proberen, omdat ik het programma niet heb.
Het geen waar je om vroeg, de datum goed neer zetten, is geslaagd.
 
Willem Blaas,


Ik moest wel enkele regels uit schakelen om de macro te proberen, omdat ik het programma niet heb.
Het geen waar je om vroeg, de datum goed neer zetten, is geslaagd.

goede middag,
na in t week-end wat gestoeid te hebben is het gelukt en hij doet wat van m verwacht wordt, DANK hiervoor.

een aantal dagen ervoor was ik al bezig geweest met nog iets anders wat ook met datums te maken heeft en dat lukte toen wel in een keer, rara
in de bijlage het bestand, en in het formulier frminlom_inv zit de code "verwerken" daar doet ie wel in een keer goed met de "dim" date, is hier een verklaring voor ?

er zijn een aantal formulieren weg hoor dus hij doet t niet goed, t is maar een weet he.

bedankt weer voor zover

groet willem
 

Bijlagen

Willem Blaas,

Ben je soms bang dat wij het programma gebruiken?

Hij geeft al bij de eerste knop een fout melding.
Het formulier wat er wel in zit kan ook niet worden opgestart.

Hoe moet je een fout op sporen als je de helft mist?
Ik ben maar een leek, misschien dat een expert het wel kan.
 
vermijd Select en activate in VBA want overbodig

Kijk voor een userform als database-invoerscherm eens hier
 
Dit stukje code werkt ook zo
Code:
Sub aantal()
      
    Sheets("aantal").Select
    Range("A1") = "=TODAY()"
    Application.CutCopyMode = False
    Selection.NumberFormat = "dd/mm/yyyy"
 
    Dim Pro_air_straantal As String
    Pro_air_straantal = ActiveCell
    
    Sheets("aantal").Copy
    ActiveWorkbook.SaveAs Filename:="c:\garantie_lijst\lijsten\" & Pro_air_straantal & " _aantal.xls"
    ActiveWorkbook.Save
    ActiveWindow.Close

End Sub

Deze code ook.
Code:
Sub volgende_code()
    Dim msg, style, title, help, ctxt, response, mystring
    
    Sheets("leeg").Select
    msg = " Wilt u nog meer artikelen invoeren voor deze klant ?"
    style = vbYesNo + vbQuestion + vbDefaultButton1
    title = "Invoer garantie artikelen"
    help = "DEMO.HLP"
    ctxt = 1000
    response = MsgBox(msg, style, title, help, ctxt)

    If response = vbYes Then
        frmcode_02.Show
    End If
    
    If response = vbNo Then
        Sheets("open").Select
        frmcentrum.Show
    End If

End Sub
 
Laatst bewerkt:
Wim, wat denk je van deze
Code:
Sub aantal()
    Dim Pro_air_straantal As String
    With Sheets("aantal")
    Pro_air_straantal = ActiveCell
        .[A1] = Format(Date, "dd/mm/yyyy")
        .Copy
    End With
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:="c:\garantie_lijst\lijsten\" & Pro_air_straantal & " _aantal.xls"
    ActiveWindow.Close
End Sub

Sub volgende_code()
    Sheets("leeg").Select
    response = MsgBox(" Wilt u nog meer artikelen invoeren voor deze klant ?", _
                    vbYesNo + vbQuestion + vbDefaultButton1, "Invoer garantie artikelen", _
                    "DEMO.HLP", 1000)
    If response = vbYes Then
        frmcode_02.Show
    Else
        Sheets("open").Select
        frmcentrum.Show
    End If
End Sub

Mvg

Rudi
 
Warme bakkertje,

Ik vond het al knap van me dat ik de code een beetje had ingekort.
Ben maar een amateur hoor, jullie hebben er meer verstand van.

Maar antwoord op je vraag;
Wim, wat denk je van deze
Kan ik alleen maar antwoorden ziet er goed uit en beter dan ik gedaan heb.

Ik had de overbodige dingen (dubbele verwijzigingen naar een blad) er uit gehaald.
 
@ Wim & @Rudi

Vermijd Select en activate in VBA

Bijv.
Code:
Sub aantal()
  With Thisworkbook
    .SaveAs "c:\garantie_lijst\lijsten\" & format(date,"yyyymmdd") & "_aantal.xls"
    .Close
  End With
End Sub

Code:
Sub volgende_code()
    If MsgBox(" Wilt u nog meer artikelen invoeren voor deze klant ?",   vbYesNo + vbQuestion, "Invoer garantie artikelen") =vbYes Then
        frmcode_02.Show
    Else
        frmcentrum.Show
    End If
End Sub
 
Laatst bewerkt:
Hij kan nog beter
Code:
Sub aantal()
   With Sheets("aantal")
        .[A1] = Format(Date, "dd/mm/yyyy")
        .Copy
    End With
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:="c:\garantie_lijst\lijsten\" & ActiveCell.Value & " _aantal.xls"
    ActiveWindow.Close
End Sub

Mvg

Rudi
 
@snb
Akkoord, maar dan moet je de code van dat formulier ook gaan aanpassen zodat hij de juiste dingen naar de juiste sheet schrijft, iets waar we nu geen zicht op hebben

Mvg

Rudi
 
@Rudi

Pas als er weggeschreven moet worden is het tijd de plaats aan te geven. En ook dan zonder select of activate, maar met een 'harde' aanduiding van de lokatie (bijv. workbooks(3).sheets(4).range("B7"))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan