Eu duvido que esta é a melhor maneira de fazer isso, mas aqui está uma solução. Obviamente, não é muito polido, pois não tenho certeza de como você estará colocando seu incremento de tempo ou se os dados são apenas um parágrafo em uma célula, mas isso deve levá-lo a maior parte do caminho até lá.
Ele divide o valor da célula ativa em uma matriz procurando por "[", em seguida, ajustou os primeiros 2 caracteres em incrementos de hora e os caracteres 4 e 5 na etapa de minuto e, em seguida, reúne tudo de volta.
Isso também funciona na célula ativa, o que não é uma boa prática de codificação.
Sub update_times()
Dim sParts() As String
Dim input_text As String
Dim output_text As String
Dim split_on As String
Dim hours_add As Integer
Dim minutes_add As Integer
Dim hours_final As Integer
Dim minutes_final As Integer
split_on = "["
hours_add = 9
minutes_add = 30
input_text = ActiveCell.Value
sParts = Split(input_text, split_on)
output_text = sParts(0)
For i = 1 To UBound(sParts)
hours_final = Left(sParts(i), 2) + hours_add
minutes_final = Mid(sParts(i), 4, 2) + minutes_add
'checks to wrap data
If minutes_final > 59 Then
hours_final = hours_final + 1
minutes_final = minutes_final - 60
End If
If hours_final > 23 Then
hours_final = hours_final - 24
End If
'put the part back together with the new hour and minutes
sParts(i) = "[" & Format(hours_final, "00") & ":" & Format(minutes_final, "00") & Right(sParts(i), Len(sParts(i)) - 5)
'add the part to the final string
output_text = output_text & sParts(i)
Next
ActiveCell.Value = output_text
End Sub