Avatar billede ups34 Nybegynder
02. august 2008 - 23:12 Der er 21 kommentarer og
1 løsning

Bevare en tidsregistrering efter den er gemt

Jeg ved ikke hvordan jeg bevare en tidsregistrering jeg har fået vha koden NOW

Nu ændres tiderne (selvfølgelig) når jeg indsætter nye rækker, men ideen er at jeg bevare den registrede tid til videre beregninger.

Koden jeg bruger pt er:

Private Sub cmbStart_Click()
Worksheets("Time registrering").Activate
Range("A4").Select
If Range("A4").Value = "" Then
Range("A4").Activate
Else
Range("A4").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
With ActiveCell
.Value = clstDørNummer.Text
If chbKLB.Value = True Then
.Offset(0, 3).Activate
With ActiveCell
ActiveCell.FormulaR1C1 = "= NOW()"
End With
End If

End With
End Sub

Jeg skal altså bruge en anden formel der angiver den aktuelle tid bare ved et tryk på "Start" knappen, men hvor det ikke bliver opfattet som en kode
Håber det er til at forstå
PFT
MVH
Ups
Avatar billede kabbak Professor
03. august 2008 - 09:21 #1
ActiveCell= NOW
Avatar billede kabbak Professor
03. august 2008 - 09:37 #2
Private Sub cmbStart_Click()
    Worksheets("Time registrering").Activate
    If Range("A4").Value = "" Then
        Range("A4").Activate
    Else
        Range("A4").CurrentRegion.Select
        ActiveCell.Offset(Selection.Rows.Count, 0).Activate
    End If
   
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now
    End If
End Sub
Avatar billede ups34 Nybegynder
03. august 2008 - 17:13 #3
Hej Kabbak

MAnge tak for hjælpen, det virker som det skal
Smid et svar, og jeg smider point ;-)
Avatar billede kabbak Professor
03. august 2008 - 17:18 #4
et svar ;-))
Avatar billede ups34 Nybegynder
03. august 2008 - 17:24 #5
Men nu har jeg måske et spørgsmål mere? Eller kan det løses under dette? Når jeg taster en start tid ind, placere den helt korrekt tiden, men en slut tid bliver ikke placeret i samme række, men på en ny. Det er logisk, da jeg bruger samme kode, men jeg ville gerne at, sluttiden bliver placeret i den række hvor DørNummer allerede er placeret ved starttiden. Kan det lade sig gøre?

Den kode jeg bruger:
Private Sub cmbSlut_Click()
  Worksheets("Time registrering").Activate
    If Range("A4").Value = "" Then
        Range("A4").Activate
    Else
        Range("A4").CurrentRegion.Select
        ActiveCell.Offset(Selection.Rows.Count, 0).Activate
    End If
   
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 4) = Now
    End If
    Unload Me
End Sub

PFT
MVH
Ups
Avatar billede kabbak Professor
03. august 2008 - 17:31 #6
Du har jo lavet en ny linje, med den første kode og den tæller du så også med i den næste kode, derfor linjen under.

Du skal vel ikke skrive dørnummeret igen ved slut, men kun sluttid, ikke ??.
Avatar billede kabbak Professor
03. august 2008 - 17:44 #7
det hurtigste, men ikke pæneste er at lave denne linje om.
fra
  ActiveCell.Offset(Selection.Rows.Count, 0).Activate

til
  ActiveCell.Offset(Selection.Rows.Count - 1, 0).Activate
Avatar billede ups34 Nybegynder
03. august 2008 - 19:27 #8
Hej Kabbak

Der er to problemer i det. For det første kan én afdeling godt starte op med deres del produktion førend andre. Det er dog på samme dør, og derfor vil jeg gerne at når døren først er "begyndt", notere alle deres tid på samme linie. For det andet, vi kan godt have at en afdeling starter op på fx 5 døre, og arbejder på dem samtidigt, derfor skal slut tiden for den enkelte dør, gerne placeres i den rigtige linie. Jo du har ret, rent regnemæssigt får jeg et problem når flere døre laves samtidigt, men det tror jeg godt jeg kan løde med en formel i arket hvor sammentælling foregår.
Derfor bør start og slut knap først undersøge om dørnummer er igang, hvis igang skal tiderne placeres i de rigtige rækker under de respektive afdelinger, hvis ikke oprettes ny linie.
Håber det er til at forstå
Ups
Avatar billede kabbak Professor
03. august 2008 - 20:36 #9
Det vil sige at  døren er en unik værdi, der kun optræder 1 gang i arket "Time registrering".

Så skal vi lige vide hvilken kolonne, den er i, så søger vi der.
Her bruger jeg A kolonnen

Private Sub cmbSlut_Click()
    Dim Data As Variant
    Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row) ' Læser  brugte celler ind fra A kolonnen
    For i = 4 To UBound(Data)
        If Data(i, a) = clstDørNummer.Text Then ' hvis indholdet svarer tilDørNummer, sættes sluttid på
            Cells(i, 4) = Now
            Exit For
        End If
    Next
  Unload Me
End Sub
Avatar billede ups34 Nybegynder
04. august 2008 - 23:16 #10
Hej Kabbak
Jeg kan ikke få det til at virke, der kommer hele tiden en fejlmelding på linien:
"If Data(i, a) = clstDørnummer.Text Then (den er markeret gul)

Jeg har sikret mig at dørnummer eksistere i kolonne A.


Private Sub cmbStart_Click()
Dim Data As Variant
    Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, a) = clstDørNummer.Text Then
            Cells(i, 4) = Now
            Exit For
        End If
    Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(o, 1) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 5) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 7) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 9) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 11) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 13) = Now
    End If

    Unload Me
End Sub
Avatar billede kabbak Professor
04. august 2008 - 23:24 #11
If Data(i, a) = clstDørNummer.Text Then
skal være

If Data(i, 1) = clstDørNummer.Text Then

du har også en fejl her

If chbPTA.Value = True Then
    ActiveCell.Offset(o, 1) = Now ' du har o ikke 0
    End If

skal være

If chbPTA.Value = True Then
    ActiveCell.Offset(0, 1) = Now
    End If
Avatar billede ups34 Nybegynder
23. august 2008 - 13:04 #12
Hej Kabbak

Jeg har været væk så jeg har ikke haft tid at fortsætte med dette regneark. Nu er jeg hjemme igen, og vil hører om du fortsat vil hjælpe?
Jeg kan ikke få det til at virke. Sluttiden bliver stadig placeret helt tilfældigt i arket, samtidigt kan jeg ikke få en ny starttid til at blive registreret på samme linie hvor døren er registreret 1. gang. Mine koder ser således ud:

Private Sub cmbSlut_Click()
  Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
            Cells(i, 4) = Now
            Exit For
        End If
 
 
  Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 4) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(0, 2) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 6) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 8) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 10) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 12) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 14) = Now
    End If

    Unload Me
End Sub

Private Sub cmbStart_Click()
Dim Data As Variant
    Worksheets("Time registrering").Activate
    If Range("A4").Value = "" Then
        Range("A4").Activate
    Else
        Range("A4").CurrentRegion.Select
        ActiveCell.Offset(Selection.Rows.Count, 0).Activate
    End If
   
    Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
            Cells(i, 4) = Now
            Exit For
        End If
    Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(0, 1) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 5) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 7) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 9) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 11) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 13) = Now
    End If

    Unload Me
End Sub
Avatar billede kabbak Professor
23. august 2008 - 14:14 #13
prøv at rette

Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
            Cells(i, 4) = Now
            Exit For
        End If
    Next

til


Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then

      cells(i,1).select ' det er kun denne linje der er sat ind

            Cells(i, 4) = Now
            Exit For
        End If
    Next
Avatar billede kabbak Professor
23. august 2008 - 14:15 #14
NB det er i begge, du skal
både cmbStart_Click og cmbSlut_Click
Avatar billede ups34 Nybegynder
26. august 2008 - 09:07 #15
Hej Kabbak
Det nærmer sig, ihvertfald med placeringen, men nu ændre starttiden sig, når jeg trykker på slut (De bliver ens)
Samtidigt ændre starttiden sig i fx KLB, når Skum trykker på Start (de bliver også ens, men sluttiden i KLB ændre sig ikke)
Håber du har en ide :-)



Private Sub cmbSlut_Click()
  Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
            Cells(i, 4) = Now
            Exit For
        End If
 
 
  Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 4) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(0, 2) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 6) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 8) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 10) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 12) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 14) = Now
    End If

    Unload Me
End Sub

Private Sub cmbStart_Click()
Dim Data As Variant
   
   
    Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
            Cells(i, 4) = Now
            Exit For
        End If
    Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(0, 1) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 5) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 7) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 9) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 11) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 13) = Now
    End If

    Unload Me
End Sub
Avatar billede kabbak Professor
26. august 2008 - 09:24 #16
Cells(i, 4) = Now

den har du i begge koder, hvis det er starttiden, der står der, så slet linjen i koden for slut

måske skulle du rette

If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
            Cells(i, 4) = Now
            Exit For
        End If
    Next

til

If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
    if Cells(i, 4) ="" then ' tjekker om den er tom, hvis ja, skrives  Now i dan
            Cells(i, 4) = Now
      end if
            Exit For
        End If
    Next
Avatar billede ups34 Nybegynder
26. august 2008 - 10:36 #17
Hej Kabbak
Det bliver bedre og bedre! Men starttiden ændre sig stadig, når næste afdeling trykker på start. Altså hvis KLB har trykket start, og en tid er påført, når skum trykker start, ændre KLB's starttid sig til samme
Der er ingen forskel om slut tiden for den enkelte afdeling er påført
Den er jo lidt besværlig den her, du må endelig sige til hvor mange point jeg begynder at skylde ;-)
Avatar billede kabbak Professor
26. august 2008 - 11:54 #18
Vi har problemet her:

For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
            Cells(i, 4) = Now ' denne er den samme som ActiveCell.Offset(0, 3),længere nede
            Exit For
        End If
    Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now ' denne er den samme som  Cells(i, 4) = Now
    End If

så jeg ved ikke om den sidste skal fjernes / ændres
Avatar billede ups34 Nybegynder
26. august 2008 - 13:25 #19
Jeg er ikke helt med

Linien "IfchbKLB.value = True ....." Er jo den der bestemmer hvor tiden skal smides

Et dørnummer ligger på en række, alle afdelinger har to kolonner hhv start slut
I kolonne A ligger dørnummer
Jeg for står ikke helt hvad du mener problemet er, for jeg kan ikke se at noget kan undværes
MVH
Ups
Avatar billede kabbak Professor
26. august 2008 - 15:31 #20
Ja men tiden smides både i
Cells(i, 4) = Now
og
If chbKLB.Value = True Then
        ActiveCell.Offset(0, 3) = Now ' denne er den samme som  Cells(i, 4) = Now
    End If

Da det er samme celle det drejer sig om, så er spørgsmålet, hvilken af de 2 skal beholdes

Man kunne gøre sådan

  Worksheets("Time registrering").Activate
    Data = Range("A1:A" & Range("A65536").End(xlUp).Row)
    For i = 4 To UBound(Data)
        If Data(i, 1) = clstDørNummer.Text Then
        Cells(i, 1).Select
  '        Cells(i, 4) = Now
            Exit For
        End If
    Next
    ActiveCell.Value = clstDørNummer.Text
    If chbKLB.Value = True and  ActiveCell.Offset(0, 3) ="" Then
        ActiveCell.Offset(0, 3) = Now
    End If
    If chbPTA.Value = True Then
    ActiveCell.Offset(0, 1) = Now
    End If
    If chbSkum.Value = True Then
    ActiveCell.Offset(0, 5) = Now
    End If
        If chbSmed.Value = True Then
    ActiveCell.Offset(0, 7) = Now
    End If
    If chbRulleport.Value = True Then
    ActiveCell.Offset(0, 9) = Now
    End If
    If chbBeslågning.Value = True Then
    ActiveCell.Offset(0, 11) = Now
    End If
    If chbForsendelse.Value = True Then
    ActiveCell.Offset(0, 13) = Now
    End If

    Unload Me
End Sub
Avatar billede ups34 Nybegynder
26. august 2008 - 16:22 #21
Hej Kabbak

Igen!!! Jeg er imponeret
Det virker
Tusind tak for hjælpen

Jeg mente det jeg skrev om ekstra point, måske du kan vejlede i, hvordan?

MVh
Ups
Avatar billede kabbak Professor
26. august 2008 - 22:09 #22
ikke flere point, hvis det virker, er jeg tilfreds.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester