Just nu i M3-nätverket
Jump to content

Loggning av tiden för inmatnng


Bjarne9

Recommended Posts

Hej! Jag är en medelmåtta på Excel med en fråga:

 

Jag skulle vilja få till en funktion där tiden för en viss inmatning (egentligen inmatning + ENTER) loggas. Jag får till det på ett icke tillfredsställande sätt genom att koppla NU() till inmatningen, men problemet med det är att varje ny inmatning korrigerar och uppdaterar alla tidigare inmatningar, något som jag inte önskar.

 

Jag vill alltså få till något där jag kan skriva ett värde i A1 (och trycka ENTER), och att det i B1 loggas tiden för inmatningen, därefter fortsätta att skriva i A2 (tiden i B2), skriva i A3 (tiden i B3)...osv

 

Kan det behövas ett makro? I så fall, jag önskar inte att det krävs någon knapptryckning utöver ENTER.

 

 

Tacksam för hjälp

 

[inlägget ändrat 2009-02-02 17:15:49 av Bjarne9]

Link to comment
Share on other sites

Enda riktigt säkra sättet att göra detta är att hantera inmatningen via fält och sedan med VBA kopiera in dem där de ska vara och sätta en tidstämpel.

 

Då separerar man användaren från själva datatabellen och därmed möjlighet att påverka tiden.

 

Men visst finns det andra lösning. En egen funktion kan skapas som inte är flyktigt som NU(), skapa en modul i VBA-editor och skriv in

Function MittNu(rn As Range) As Variant
  MittNu = Now
End Function

och använd som en egen funktion. Men denna metod är inte helt säker. Denna funktion kan räknas om om Excel räknar om hela boken eller om cellens värde ändras.

 

Snabbknappar

CTRl+SHIFT+ .

ger datum

CTRL+SHIFT+,

ger tidpunkt

 

Du skapa en SUB-rutin i VBA, likt den ovan, som du kopplar till en snabbknapp. Låt funktionen skriva till aktiva cellen exempelvis

 

Och sedan den metod jag INTE rekommenderar men jag får väl skriva den ändå...Excels händelserutiner. De är kluriga, man bör undvika dem men ibland...

 

ta fram bladets kodblad, det blad du vill ha funktionaliteten på. Säg att det är vid inmatning i området A1:A10 som du vill reagera och då skriva in tid i B-kolumnen:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells.Count <> 1 Then Exit Sub
   If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then
       Target.Offset(0, 1) = Now
   End If
End Sub

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Vad kan man säga! Om det inte vore för privat skulle jag erbjuda dig en puss. Du får nöja dig med ett tack! Jag fick inte det första att funka, men däremot det sista. Just som jag ville ha det!

 

(Jag vet inte om det kan verka onöjaktigt, men ibland använder jag OpenOffice och skulle bli mycket glad för en liknande funktion där. Kan man passa på och fråga om nu/någon vet hur det skulle se ut i OpenOffice?)

 

Tack!

/Bjarne

 

Link to comment
Share on other sites

Gör en sökning på nätet och med OO verkar det vara lite mer komplext, inte till 100% färigimplementerat så att det för vanliga odödliga blir lätt att hantera. Läs exempelvis denna kommentar om hur det fungerar idag

http://user.services.openoffice.org/en/forum/viewtopic.php?f=21&t=10123

 

eller denna sida för en enkel demonstration av en händelsehanterare.

http://www.oooforum.org/forum/viewtopic.phtml?t=4490

Fast hur man tar reda på vilken cell som avfyrat händelsen? Inte i det exemplet men kanske det står i att finna i annat?

 

Ja denna verkar fungera:

http://computer-programming-tutorials.suite101.com/article.cfm/how_to_work_with_user_selections_in_calc_macros

MEN jag får den inte att fungera, utav någon anledning skickas inte variabeln med i anropet:

add_cell_listener "A1"

till funktionen

Sub add_cell_listener (cell_id As String)

 

så jag får ändra raden där själva lyssnaren skapas till

oCell(i) = oSheet.getCellRangeByName("A1")

istället.

Kan för lite om OOs Basic för att fatta vad som går fel...

 

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...