26. maj 2005 - 12:00Der er
3 kommentarer og 1 løsning
Tidsregistrering i vagtskema
Nogle ansatte - lad os sige 10 stykker, skal placeres på et vagtskema.
Jeg forestiller mig, at man i to celler indtaster hhv. mødetid og sluttid for hver ansatte for hver dag. Dvs. 31 rækker - en for hver dag, og så to kolonner for hver ansatte til de to tidspunkter.
Herefter er mit problem, at jeg gerne vil lave en analyse, så jeg nemt kan overskue hvor mange der er på arbejde i løbet af dagen. F.eks. i intervaller af en halv time.
F.eks.
12:00-12:30 12:30-13:00 etc. 3 5 -''-
Håber nogen ligger inde med et smart forslag.
Jeg har lavet nogle endeløse skitser af HVIS-funktioner som checker om starttidspunkt er større eller mindre end det aktuelle klokkeslet, men der må kunne laves en snildere makro eller hva'???
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Jeg har prøvet med datoen i A3:A33 (som tal 1-31), og medarbejder A i kolonne B3:C33, medarbejder B i kolonne D3:E33 osv. Derudover skal der navngives 4 celler, der bruges i makroen. Navnene er: Dato, Start_tid, Slut_tid og Paa_job.
De 3 første giver sig selv, her indtastes værdierne, Paa_job returnerer antallet af medarbejdere, der er på arbejde pågældende dato og tidsrum. Medarbejdernes tider + de to indtastningsceller er formatteret som tt:mm. Det smarteste vil nok være, at lave en knap i regnearket der kan køre makroen. Og her følger så makroen:
Sub Tid_reg() Application.ScreenUpdating = False 'Slår skærmopdateringen fra mens makroen kører Set Checkdato = Range("Dato") Set Starttid = Range("Start_tid") Set Sluttid = Range("Slut_tid")
Range("A3").Select 'Vælger kolonnen med dato Do While IsEmpty(ActiveCell.Offset(1, 0)) = False 'Gennemgår cellerne i kolonnen indtil der kommer en tom celle If ActiveCell.Value = Checkdato Then GoTo Fortsaet 'Hvis indtastningsværdien er lig med datoen fortsættes ActiveCell.Offset(1, 0).Select 'Vælger cellen under den celle der netop er blevet checket Loop 'Går tilbage til "Do While" og starter igen
Fortsaet: ActiveCell.Offset(0, 1).Select 'Vælger cellen til højre for datoen Tael = 0 'Sætter tælleren til værdien 0
Do While IsEmpty(ActiveCell.Offset(0, 0)) = False 'Gennemgår cellerne i kolonnen indtil der kommer en tom celle If ActiveCell.Value <= Starttid And ActiveCell.Offset(0, 1).Value >= Sluttid Then Tael = Tael + 1 'Hvis indtsatningsværdierne ligger inden for arbejdstiderne fortsættes ActiveCell.Offset(0, 2).Select 'Flytter til næste mødetidskolonne Loop 'Går tilbage til "Do While" og starter igen
Range("Paa_job").Select 'Vælger cellen hvor værdien fra tælleren skal skrives ActiveCell = Tael 'Indsætter tællerens værdi i cellen
Application.ScreenUpdating = True 'Slår skærmopdateringen til igen End Sub
Jeg har ikke helt fået den til at virke, men efter nogen tids granskning, kan jeg se, at den ikke er helt ved siden af... Desuden er kravene til regnearket steget en del siden da, men det er jo ikke din fejl...
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.