Avatar billede Winnick Praktikant
05. juni 2009 - 10:05 Der er 7 kommentarer og
1 løsning

fang tidspunkt med knap

Hejsa,

jeg sidder og roder med at få lavet et excel ark hvor vi kan tage tid på hvor langt der går med forskellige arbejdsopgaver.

Derfor vil jeg gerne have lavet en knap som fange tidspunktet knappen blev trykket på med dato, time, minut og sekund, i et felt der er x kolonner til højre for knappens placering.
Og det samme med en stop knap.


mit første forsøg med en makro, har den ulempe at man skal huske at markere den rigtige celle

Jeg har lavet en start tids kollone og en stop tidskollone og io hver celle tjekker den på om der er valgt en kategori, når det sker, starter den timeren =IF(H3<>"",NOW(),"")

når man så markere feltet og trykker på en knap , fryser den tiden for start og man skal gøre det samme for at stoppe timeren i det andet felt.


Sub Macro1()
'
' Macro1 Macro
' Macro recorded 7/22/2008 by IBM_USER
''
    Calculate
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

Jeg håber at kunne få en stump kode som kan gøre det relativt i forhold til knappens placering, så jeg kan lave en knap for hver linie - istedet for at folk skal huske at være placeret korrekt når de arbejder med arket.

på forhånd tak for hjælpen
Avatar billede jkrons Professor
05. juni 2009 - 13:47 #1
Da knapperne som sådan ligger oven på regnearket, har cellerne ingen relativ placering i forhold til knapperne. Jeg vilel derfor nok gå en anden vej.

På arkets kodeark, ville jeg indlægge


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.EnableEvents = False
        If Target.Column = 1 Or Target.Column = 2 Then
            ' Din kode her
            Cancel = True
        End If
    Application.EnableEvents = True
End Sub

Ret 1 og 2 til de to kolonner, du har starttid og sluttid i. Så skrives tiderne, når du dobbeltklikker i cellerne i stedet for at skulle oprette x antal knapper.
Avatar billede Winnick Praktikant
05. juni 2009 - 15:46 #2
hhmm, hvad gør jeg forkert her

det er kollonerne B og C som er start og stop felterne.
Men når jeg dobbelklikker sker der ikke noget.
Skal jeg stadig have  =IF(H3<>"",NOW(),"") stående i felterne i kollerne B og C? - det har jeg nu

Så koden ser sådant ud

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.EnableEvents = False
        If Target.Column = B Or Target.Column = C Then
        macro1
      Cancel = True
        End If
    Application.EnableEvents = True
End Sub

Sub macro1()

Calculate
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

End Sub
Avatar billede jkrons Professor
05. juni 2009 - 15:53 #3
Hvis du kun skal kende tiden på kliktidspunkterne, kan du ændre til:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.EnableEvents = False
        If Target.Column = 2 Or Target.Column = 3 Then
        Target.Vaæue = Time
      Cancel = True
        End If
    Application.EnableEvents = True
End Sub

VBA kender ikek til kolonnebogstavfer, men kun til kolonnernes numre.
Avatar billede jkrons Professor
05. juni 2009 - 15:53 #4
Target.Vaæue = Time

skal være

  Target.Value = Time
Avatar billede Winnick Praktikant
05. juni 2009 - 17:33 #5
Jeg skal gerne bruge datoen også - da der kan gå dage mellem start og stop tidspunktet.

Og jeg synes ikke rigtig jeg kan få dobbeltklik funktionen til at fungere - jeg har nok placeret koden forkert.
Avatar billede jkrons Professor
05. juni 2009 - 18:53 #6
JKoden skal ligge i kodearket for det ark, hvor den skal bruges. Højreklik på arkfanen og vælg vis Programkode.

Ret koden til

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target.Column = 2 Or Target.Column = 3 Then
            Target.Value = Now
            Cancel = True
        End If
End Sub
Avatar billede Winnick Praktikant
08. juni 2009 - 09:43 #7
Perfekt - det virker :-)

Mange tak for hjælpen
Avatar billede jkrons Professor
09. juni 2009 - 10:25 #8
Velbekomme :-)
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

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