Avatar billede FewCastle Praktikant
29. august 2014 - 08:41 Der er 8 kommentarer og
1 løsning

Ændring af tid på bestemte celler afhængig af hvad der indtastes

Overskriften er lidt svær at definere.
Vi har en medarbejderrapport som vi notere komme/gå tid samt en masse andet.
Problemet er, at der hvor vi notere pause, vil jeg gerne have det til at fungere på følgende måde (celleområdet for pause er c14:c44)
I celle AD7 står der 0:30 (bruges til at tjekke)

1. som standard står der 0:30 i pause
2. hvis en har deltid er feltet måske blankt, fordi man så ikke har middagspause.
3. en pause kan ikke være under 0:30. Så skrives der eks. 0:25 skal det automatisk ændres til 0:30

Jeg har googlet til et eller andet og det jeg er kommet frem til er, at der nok skal bruges denne funktion:
If Intersect(Target, Range("C14:C44")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

hermed er det kun celleområdet koden reagere på.

Håber jeg har fået alt med...ellers stil endelig spørgsmål.
Avatar billede prhan Juniormester
29. august 2014 - 09:37 #1
Sådan som jeg læser din problemstilling, så kan du løse det ved at lave datavalidering i c14:c44 med en liste i stil med AD6:AD7, hvor AD6 bare er tom.

Således kan der kun tastes værdierne blank (0) og 0:30 ind i cellerne.
Avatar billede FewCastle Praktikant
29. august 2014 - 09:54 #2
Arh, ikke helt. Har nok lige glemt en lille vigtig detalje.
Dem som ikke har deltid har mulighed for at holde pause ud over den halve time (afspadsering eller Flex).
Her bruger jeg datavalidering, så jeg har låst dem fast på at de ikke kan skrive mindre end en ½ time og ikke højere end 8:00. Der kommer selvfølgelig en advarsel hvis der skrives under 0:30, så kan man forsøge igen.
Udfordringen er at hvis man trykker delete, hvilket gør feltet tomt, så har vi problemet...fordi dem som har pause skal jo holde sin pause og feltet må ikke være tomt.

Håber det er til at forstå.

Så hvis man kan finde en måde på at feltet ikke må være tomt, hvis man er på fuld tid, så vil den kunne løse mit problem.
Avatar billede prhan Juniormester
29. august 2014 - 10:40 #3
Hvad med en brugerdefineret datavalidering i stil med?

=OG(B14="fuldtid";ER.TAL(C14);IKKE(ER.TOM(C14));C14>=0,020833333)

Hvor B14 står der deltid/fuldtid

Der skal nok arbejdes videre med formlen for deltid, så der skal flettes nogle kriterier ind for deltid med en en ELLER formel.
Avatar billede FewCastle Praktikant
29. august 2014 - 11:02 #4
Har faktisk lige løst den med denne kode ved hjælp af Intersect.

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("D14:D44")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
    'Set the values to be uppercase
    Application.EnableEvents = False
    If Range("AR" & (ActiveCell.Row)).Value = 1 Then
'      ingenting
    Else
        If IsEmpty(Range("D" & (ActiveCell.Row))) Then
            Target.Value = "0:30"
            MsgBox "Du kan ikke skrive en pause på 0 min." & vbCrLf & "Der kan skrives en pause mellem 0:30 og 8:00." & vbCrLf & "Der indsættes automatisk pause på 0:30", vbOKOnly + vbInformation, "Du kan ikke slette pause"
        Else
        End If
    End If
    Application.EnableEvents = True
End Sub
Avatar billede store-morten Ekspert
29. august 2014 - 11:16 #5
Her bruger jeg datavalidering, ... feltet må ikke være tomt.
Prøv at fjerne flueben i "Ignorer tomme"
Avatar billede FewCastle Praktikant
29. august 2014 - 11:28 #6
Problemet er jo at feltet for pause gerne må være tomt hvis man er på deltid, for så har man jo ikke pause!
Derfor kan datavalidering ikke bruges.
Min kode løser i hvert fald mit problem.
Avatar billede FewCastle Praktikant
29. august 2014 - 11:28 #7
Svar endelig som tak for at du ville give en hjælpende hånd :)
Avatar billede prhan Juniormester
29. august 2014 - 13:09 #8
Ok, selv det ikke var til så meget hjælp :)
Avatar billede FewCastle Praktikant
29. august 2014 - 13:27 #9
Måske jeg kan bruge det i anden sammenhæng.
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

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