20. februar 2010 - 15:45Der er
14 kommentarer og 1 løsning
forenkel koden??
Hej eksperter..
Så er jeg tilbage igen.. :) har et stykke kode, som faktisk virker helt præcist, som det skal. Nu vil jeg så høre om det måske kunne laves lidt mere enkelt, og hvis det kan om der er nogen som kan hjælpe mig med det, da det kommer til at fylde lidt meget, når det skal ligges ind til 31 rækker, og excel kommer på overarbejde med så meget kode på en gang..??
Sub timer() Dim iResultat Dim iResultat1 Dim iResultat2
Sheets("jan").Select If [m16] = 2 Then GoTo aften If [m16] = 1 Then GoTo dag dag: [x16] = "" [y16] = "" If [i16] * 24 < 17 Then iResultat = 17 - ([i16] * 24) iResultat1 = ([j16] * 24) - 17 [s16] = iResultat + ([e16 - d16] * 24)
If [n16] = "" Then [t16] = iResultat1 Else GoTo Nat End If Else [t16] = ([j16 - I16]) * 24 End If Exit Sub
kort sagt er det time seddler jeg er ved at lave. så jeg har jo mandag, tirsdag, osv. og så en hel månede (31 rækker)
men det er jo en større opgave, da den selv skal finde ud af, om den skal regne timerne ud det ene eller andet sted.
Har en seddel til fast arbejdsplads, den anden er i tilfælde af at jeg tager et vikarjob, begge seddler er der 3 * 7 celler, (dag, aften, nat) og ned af fra (mandag til søndag)
Håber det gav et lidt bedre indblik i hva' jeg prøver på, koden har jeg, som i du ser fundet, men sys den virker noget uoverskuelig da den skal bruges i så mange rækker, så håbet der var en som lige kendte nogle små fikse koder som ville gøre det lidt nemmer??
koden er lavet om, så du skal stå på den række der udregnes, den virker overalt.
Sub timer() Dim iResultat, iResultat1, iResultat2, RW As Long 'Sheets("jan").Select RW = ActiveCell.Row ' her findes rækken hvor du står
If Cells(RW, "M") = 2 Then GoTo aften If Cells(RW, "M") = 1 Then GoTo dag dag: Cells(RW, "X") = "" Cells(RW, "Y") = "" If Cells(RW, "I") * 24 < 17 Then iResultat = 17 - (Cells(RW, "I") * 24) iResultat1 = (Cells(RW, "J") * 24) - 17 Cells(RW, "S") = iResultat + (Cells(RW, "E") - Cells(RW, "D") * 24)
If Cells(RW, "N") = "" Then Cells(RW, "T") = iResultat1 Else GoTo Nat End If Else Cells(RW, "T") = (Cells(RW, "J") - Cells(RW, "I")) * 24 End If Exit Sub
Du har ramt helt plet med det svar, det funker præcis som det skal.. så smid et svar.. :)
vil dog lige høre om man evt kan få den til at tage højde for at man efter at have trykket start tid og slut tid normalt ville bruge enter i stedet for tab igen??
Jeg mener at hvis du skriver i en række og så når du er færdig med at skrive i den sidste celle, så kører koden automatisk. Jeg skal bare vide hvilken kolonne du sidst skriver i.
Det gør det jo lidt vanskeligere, men du kan jo også styre den bedre manuelt, den laver jo ikke noget uønsket. ;-))
jeg forstår ikke hvad du mener med:
"vil dog lige høre om man evt kan få den til at tage højde for at man efter at have trykket start tid og slut tid normalt ville bruge enter i stedet for tab igen??"
ja det gjord det nemlig.. :) men du du må gerne skrive det til mig alligevel, kunne godt være jeg kunne få brug for det til noget andet jeg også har givet mig i kast med.. :)
hvis vi nu siger at jeg står i D16 og taster start tid ind, trykker tab, og taster slut tid ind, trykker jeg så enter nu, så hopper den ned på D17, hvilket betyder at det er række 17 og ikke række 16 den regner ud som den jo gerne skulle??
Denne i arkets modul, du skal have en i hvert ark du har timesedler i.
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E2:E32,J2:J32,O2:O32")) Is Nothing Then Exit Sub Call timer(Target.Row) End Sub
Ret toppen af den anden kode til dette
Sub timer(RW) Dim iResultat, iResultat1, iResultat2 ' 'Sheets("jan").Select ' RW = ActiveCell.Row ' her findes rækken hvor du står
den del her, holder øje med om du skriver i E, J eller O kolonnen, der er der su skriver sluttid, hvis disse celler ændrer sig kører koden.
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E2:E32,J2:J32,O2:O32")) Is Nothing Then Exit Sub Call timer(Target.Row) End Sub
Synes godt om
Ny brugerNybegynder
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.