13. august 2004 - 11:39Der er
6 kommentarer og 1 løsning
Automatisk comment
Hej...
Jeg er ved at lave et checkskema der vil blive brugt af flere personer, og derfor kunne jeg godt tænke mig at holde styr på hvem & hvornår de forskellige felter bliver afkrydset.
Da skemaet kommer til at indholde mange felter, synes jeg at det ville se pænest ud, hvis disse informationer bliver gemt som en 'comment'.
Kan dette lade sig gøre og vigtigst hvordan.....
Det er meget vigtigt at man kan se hvem og hvornår feltet er blevet af krydset.
her er en kort version af en makro de kan gøre det. Lægges i arkets eget kodemodul (højreklik på arkfanen og vælg "vis programkode"
Private Sub Worksheet_Change(ByVal Target As Range) Dim User As String User = (Environ("Username") & " : " & Now()) Target.AddComment User Target.Comment.Shape.TextFrame.AutoSize = True End Sub
dit forslag virker næsten, problemet er hvis en bruger indtaster i det forkerte felt og ønsker at slette dette kommer der en fejlmeddelelse, og der efter er man nød til at højreklikke for at slette 'comment'. Er det ikke muligt at slippe for dette....hvis der dukkede en msgbox op, hvor bruger skulle svare ja/nej til at slette ville dette være rart, så man ikke sletter eventuel log - se nye ønsker nedenfor.
Når vi nu er igang, er det muligt at lave en form for log - dvs ny linie i 'comment' ved hver ændring af cellens indhold, dette ville være at ønske, da checkskemaet bruger forskellige bogstaver alt efter produktets tilstand. Hvis det indtastet bogstav kommer med i 'comment' vil det være helt perfekt.
Jeg håber ikke at det er blevet for meget, men jeg giver gerne ekstra 200 point ( har ikke mange at give af ....)for den perfekte løsning.
Jeg havde en anelse om at du ville ønske mere :-) nedenstående makro logger alle ændringer på arket indenfor et defineret område. hvis man taster i forkert felt og derefter sletter bliver det også logget. (man kunne jo have slettet en andens felt.)
Private Sub Worksheet_Change(ByVal Target As Range) Dim User As String, stOldText As String '********************************************************************** 'Disse 3 linier kan slettes hvis man ønsker at kommenteringen skal 'ske på alle celler i arket. 'Ellers skal man ændre linien Set rng = range("B1:K100") til det 'område man ønsker at kommentering skal ske i. Dim rng As Range Set rng = Range("B1:K100") If Intersect(Target, rng) Is Nothing Then Exit Sub '********************************************************************** User = Target.Value & " : " & (Environ("Username") & " : " & Now()) On Error Resume Next If IsError(stOldText = Target.Comment.Text) = True Then Target.AddComment User Else stOldText = Target.Comment.Text Target.Comment.Text Text:=stOldText & vbLf & User End If Target.Comment.Shape.TextFrame.AutoSize = True End Sub
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.