Avatar billede heissel Novice
20. september 2018 - 23:40 Der er 8 kommentarer og
1 løsning

oprunding af et klokkeslæt

Jeg har brug for en funktion i vba, der gør det samme som AFRUND.LOFT(J14;"00:15") .
Grunden er, at jeg har en kommandoknap der levere klokkeslettet i den celle man står, men jeg regner kun med hele kvarterer. jeg anvender excel 2013.
Avatar billede Jan Hansen Ekspert
21. september 2018 - 01:34 #1
Application.WorksheetFunction.Ceiling(range("J14","00:15")
Avatar billede jens48 Ekspert
21. september 2018 - 10:50 #2
To forskellige formelløsninger:

=HVIS(MAFRUND(J14;15/24/60)<J14;MAFRUND(J14;15/24/60)+1/24/4;MAFRUND(J14;15/24/60))

=HELTAL(J14*24*4)/24/4+HVIS(REST(J14;1/24/4);1/24/4;)
Avatar billede heissel Novice
23. september 2018 - 09:25 #3
Hej tak for svarene.
Desværre kan jeg ikke få dem til at virke :-(
Her er den funktion jeg arbejder med.

Private Sub CommandButton1_Click()
  Tid = Format(Time, "hh:mm")
  Colonne = Mid(ActiveCell.Address, 2, 1)
 
  If Colonne = "B" Then
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke, 5).Activate
      GoTo E
  Else
  End If
 
  If Colonne = "C" Then
      Tid = Format(Time, "hh:mm")
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke + 1, 1).Activate
      GoTo E
  Else
  End If

  MsgBox "Fejl - Du skal stå i et klokkeslets-felt" 
E:

End Sub

Håber på en løsning.

Bent
Avatar billede Jan Hansen Ekspert
23. september 2018 - 11:32 #4
Hej Bent


Option Explicit
Dim Tid As Date, Colonne As String, Raekke As Integer
Sub CommandButton1_Click()
  Tid = Format(Time, "hh:mm")
  Kvarter
  Colonne = Mid(ActiveCell.Address, 2, 1)
 
  If Colonne = "B" Then
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke, 5).Activate
      GoTo E
  Else
  End If
 
  If Colonne = "C" Then
      Tid = Format(Time, "hh:mm")
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke + 1, 1).Activate
      GoTo E
  Else
  End If

  MsgBox "Fejl - Du skal stå i et klokkeslets-felt"
E:

End Sub
Private Sub Kvarter()
    Dim num() As String
    Dim lMin As Integer
    num = Split(Tid, ":")
    Select Case num(1)
        Case Is < 16
            lMin = 15
        Case 16 To 30
            lMin = 30
        Case 31 To 45
            lMin = 0
        Case Else
    End Select
    Tid = Format(num(0) & ":" & lMin, "hh:mm")
End Sub


Jan
Avatar billede Jan Hansen Ekspert
23. september 2018 - 11:39 #5
ups der er en lille fejl i retter den lige
Avatar billede Jan Hansen Ekspert
23. september 2018 - 11:52 #6
denne er bedre


Option Explicit
Dim Tid As Date, Colonne As String, Raekke As Integer
Sub CommandButton1_Click()
  Tid = Format(Time, "hh:mm")
  Kvarter
  Colonne = Mid(ActiveCell.Address, 2, 1)
 
  If Colonne = "B" Then
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke, 5).Activate
      GoTo E
  Else
  End If
 
  If Colonne = "C" Then
      Tid = Format(Time, "hh:mm")
      ActiveCell.Value = Tid
      Raekke = Mid(ActiveCell.Address, 4)
      Cells(Raekke + 1, 1).Activate
      GoTo E
  Else
  End If

  MsgBox "Fejl - Du skal stå i et klokkeslets-felt"
E:

End Sub
Private Sub Kvarter()
    Dim num() As String
    Dim lMin As Integer, Ltime As Integer
    num = Split(Tid, ":")
    Ltime = num(0)
    Select Case num(1)
        Case Is < 16
            lMin = 15
        Case 16 To 30
            lMin = 30
        Case 31 To 45
            lMin = 45
        Case Else
            lMin = 0
            If Ltime = 23 Then
                Ltime = 0
            Else
                Ltime = Ltime + 1
            End If
    End Select
    Tid = Format(Ltime & ":" & lMin, "hh:mm")
End Sub



Jan
Avatar billede store-morten Ekspert
23. september 2018 - 11:52 #7
Prøv:
Private Sub CommandButton1_Click()
 
  If ActiveCell.Column = 2 Then 'B
      ActiveCell.Value = Format(Application.WorksheetFunction.Ceiling(Time, 1 / 96), "hh:mm")
      Cells(ActiveCell.Row, 5).Activate
      GoTo E
  Else
  End If
 
  If ActiveCell.Column = 4 Then 'C
      ActiveCell.Value = Format(Application.WorksheetFunction.Ceiling(Time, 1 / 96), "hh:mm")
      Cells(ActiveCell.Row + 1, 1).Activate
      GoTo E
  Else
  End If

  MsgBox "Fejl - Du skal stå i et klokkeslets-felt"
E:

End Sub
Avatar billede heissel Novice
23. september 2018 - 13:40 #8
Hej Store-morten og Jan Hansen

Tusind tak for jeres svar. De virker fint begge to.

Bent
Avatar billede store-morten Ekspert
23. september 2018 - 20:42 #9
Velbekomme
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