'Você pode substituir sua macro antiga (o outro tipo de macro do Excel) pelo seguinte código VBA (Visual Basic for Applications) que manipula a substituição dos pontos duplos por dois pontos.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count <> 1 Then Exit Sub 'Only check when one cell is being changed.
Select Case UBound(Split(Target.Formula, "..")) 'How many ".." appear in the formula?
'UBound returns 1 less than the number of elements in an array because array indexes start at 0, eg: array(0), array(1)
Case 1 'ie only two values entered, minutes & seconds (so add the hours)
Target.Formula = "0:" & Replace(Target.Formula, "..", ":")
Target.NumberFormat = "[m]:ss" 'Optional formatting to show duration in minutes
Case 2 'ie three values entered, hours, minutes, seconds, just replace the double dots with colons
Target.Formula = Replace(Target.Formula, "..", ":")
Target.NumberFormat = "[h]:mm:ss" 'Optional formatting to show duration in hours
End Select
End Sub
Este código supõe que um conjunto de pontos duplos significa minutos e segundos (1..1 - > 0:01:01) em vez das horas e minutos padrão do Excel.
Ele também formata as células automaticamente com base no que foi digitado. Observe o [ ]
em torno do m
ou h
que informa ao Excel para exibir a duração total de minutos. Sem o [ ]
, o Excel exibe apenas os minutos dentro das horas ou as horas do dia (ou seja, até um máximo de 59 minutos ou 23 horas). Se o valor for maior que esses máximos, o formato ignorará qualquer coisa extra. Usar o [ ]
força o Excel a exibir o número total de minutos ou horas, etc. (por exemplo, 65 minutos seriam mostrados como 5:00
com m:ss
ou 1:05:00
com h:mm:ss
, mas mostrados como 65:00
usando [m]:ss
) .
PS Se você precisar disso para trabalhar em TODAS as planilhas, precisará adicionar o código ao módulo ThisWorkbook dentro de um Sub com esta definição:
Private Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Espero que isso ajude ...