AÊÊÊÊÊ!!!!!!!
MUITO OBRIGADO....
PRIMEIRA ETAPA CONCLUÍDA...
Ficou assim ó:
A lógica esta na célula X:
=SE(OU(C4="";C5="");"";TEXTO(SE(U5-(V5-MÁXIMO(C4:L4)+C5)<0;U5;0)+ABS(U5-(V5-MÁXIMO(C4:L4)+C5));"hh:mm;;"))
A célula W ajusta se o valor for maior que 11 ou igual a 0:
=SE(SE(X5<0;"";X5)>"11:00";"";SE(SE(X5<0;"";X5)="00:00";"";SE(X5<0;"";X5)))
E, a célula N mostra em decimal:
=SE(W5<>"";(W5-INT(W5))*24;"")
...
Agora... No início eu estava abordando dois problemas, uma era a formula e outro a forma de digitar...
Abandonei a questão da forma de digitar porque não estavamos conseguindo conciliar as duas coisas.
Então vocês me ajudaram a resolver o problema da formula.
O resultado é um sistema de controle de cartão ponto para até 5 escalas de serviço por dia.
Não é coisa pouca, esta planilha é uma raridade no brasil, quem trabalha em escritorio de contabilidade ou departamento pessoal de firmas grandes deve ter se dado conta de que isso que vocês me ajudaram a construir é uma baita ferramenta para esses departamentos trabalharem.
...
Eu quero aprimorar essa planilha, tentando novamente resolver o problema da digitação.
Da forma atual eu sempre preciso digitar "hh:mm", para mostrar um horário na célula.
Existe alguma forma de digitar o número sem os ":", por exemplo:
Digitar "0630" na célula C7 e quando eu der [enter] ela converter para "06:30", automaticamente?
ATENÇÃO, o Glaydistone ofereceu este código:
Re: Digitar em decimal e mostrar em minutos.
Mensagempor Glaydistone » 11 Mai 2012, 09:06
Pedro,
Observe que o arquivo está anexado (compactado).
Eu coloquei a macro na planilha, faça um teste por favor.
Lembre-se que não precisa digitar a virgula "," ou dois pontos ":"
Despois vc pode visualizar o código, clicando as teclas ALT + F11 (PARA ENTRAR NA ESTRUTURA) e para sair da mesma ESTRUTURA clique em ALT + Q
Segue o código abaixo: (apenas para compartilhar com os demais).
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String
On Error GoTo EndMacro
If Application.Intersect(Target, Range("C5:L799")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If
Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 00:01 AM
TimeStr = "00:0" & .Value
Case 2 ' e.g., 12 = 00:12 AM
TimeStr = "00:" & .Value
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & _
Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & _
Right(.Value, 2)
Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
TimeStr = Left(.Value, 1) & ":" & _
Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
Case 6 ' e.g., 123456 = 12:34:56
TimeStr = Left(.Value, 2) & ":" & _
Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
.Value = TimeValue(TimeStr)
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "A hora digitada não é válida"
Application.EnableEvents = True
End Sub
Que funcinou quase sempre, EXCETO para o horário "2400" que deveria converter para "24:00", e no código dele convertia para "00:01".
EM ANEXO EU COLOQUEI A PLANILHA COM O RESULTADO PARCIAL, FUNCIONANDO PERFEITAMENTE, E COM UMA EXPLICAÇÃOSINHA DE COMO USÁ-LA.
Agora vocês poderiam me ajudar a adaptar o código dele, para reconhecer o horário "2400" como "24:00" ????
Postado : 18/05/2012 7:43 am