Avatar billede tupolev Nybegynder
02. december 2009 - 12:28 Der er 10 kommentarer og
1 løsning

Gem tid ved hvert liste valg

Jeg har en liste med 3 valgmulighedder

Kontakt
Møde
Salg

Jeg vil gerne gemme tid og dato for hvert valg på et andet ark.

Det kunne se såldes ud

Kontakt  01-12-09 12:35
Møde    03-12-09 14:35
Salg    05-12-09 09:45

Det er vigtigt at tider bliver gemt på en anden side/ark.

På forhånd tak for hjælpen
Avatar billede jkrons Professor
03. december 2009 - 20:05 #1
Hvis din kliste er en datavalideringsliste, kan du bruge følgende metode:

På kodemodulet til det ark, hnvor du har listen (i eksemplet Ark1) lægger du denne kode:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = Target.Value & " " & Now()
    End If
End Sub

Koden forudsætter at datavalideringslisten findes i Ark1!A1, men det kan du rette i anden linje til den celle, du faktisk har den i.

Når du vælger noget nyt i listen registreres valget, samt dato og tidspunkt for ændringen i kolonne A i ark2. Sørg for, at der står en overskrift i A1 i dette ark, inden du begynder :-)
Avatar billede jkrons Professor
03. december 2009 - 20:07 #2
Din liste kommer så til at se således ud:

Kontakt 03-12-2009 18:49:54
Møde 03-12-2009 18:50:18
Salg 03-12-2009 18:50:20
Kontakt 03-12-2009 20:04:21
Møde 03-12-2009 20:04:39
Salg 03-12-2009 20:04:40
Møde 03-12-2009 20:04:42
Avatar billede jkrons Professor
03. december 2009 - 20:12 #3
Jeg skulle måske lige nævne at hvis din liste er et Combobox kontrolelement, skal koden stadig ligge i arkets kodemodul, nmen se således ud:

Private Sub ComboBox1_Change()
        Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = ComboBox1.Value & " " & Now()
End Sub

Hvor du selvfølgelig rettet ComboBox1 til det, som din komboboks hedder.
Avatar billede tupolev Nybegynder
04. december 2009 - 11:50 #4
Det ser godt ud. Men jeg har fået endnu en udfordring. Jeg skal bruge tider fra flere lister. Valideringslisterne liggende i kollone I2 og igen i I3, I4 osv.

Det var min hensigt at tidsdataerne blev overført til et ark "time"

Her skulle det så gerne så

A                B                C             
Kontakt          Møde              Salg 
01-12-09 12:35  03-12-09 14:35    05-12-09 09:45
04-12-09 14:35  05-12-09 14:35    08-12-09 09:40
05-12-09 12:35  06-12-09 11:35    08-12-09 09:45

Håber at det er nemt at ændre. På forhånd tak
Avatar billede jkrons Professor
05. december 2009 - 11:36 #5
Det kan godt lade sig gøre, men det er ikke en simpel ændring, så jeg vender tilbage senere.
Avatar billede jkrons Professor
05. december 2009 - 11:47 #6
Det tog så alligevel ikke så lang tid:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I2:I30")) Is Nothing Then
        Select Case Target.Value
            Case Is = "Kontakt"
                Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Is = "Møde"
                Sheets(2).Range("B65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Is = "Salg"
                Sheets(2).Range("C65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Else
                Exit Sub
            End Select
        End If
End Sub

Ret området i I-kolonnen til det rigtige, og skriv ovewrskrifterne Kontakt, Møde g Salg i kolonnen A, B og C i Ark2.
Avatar billede tupolev Nybegynder
07. december 2009 - 11:04 #7
Det virker fint. Der er dog et ønske. Den skulle gerne gemme det valgte tidspunkt i sammen række om på listearket.
dvs. hvis jeg foretager et valg i række 10 skal den gemme tiden i sammen række i "Time" arket.
Avatar billede jkrons Professor
07. december 2009 - 11:08 #8
Det ville være nemmere, hvis du kom med alle ønsker på én gang :-).

Jeg ser på det og vender tilbage.
Avatar billede jkrons Professor
07. december 2009 - 12:40 #9
Prøv med

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I2:I30")) Is Nothing Then
    rk = Target.Row
        Select Case Target.Value
            Case Is = "Kontakt"
                Sheets(2).Range("A" & rk).Value = Now()
            Case Is = "Møde"
                Sheets(2).Range("B" & rk).Value = Now()
            Case Is = "Salg"
                Sheets(2).Range("C" & rk).Value = Now()
            Case Else
                Exit Sub
            End Select
        End If
End Sub
Avatar billede tupolev Nybegynder
07. december 2009 - 12:59 #10
Vil du oprette et svar så jeg kan give dig dine velfortjenete points. Det virkede perfekt.
Avatar billede jkrons Professor
07. december 2009 - 14:55 #11
Et svar :-)
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