Sumar horas de varias columnas

-Tengo creada una macro para que me sume las horas de varias columnas.
Hora entrada mañana; hora salida mañana y suma horas mañana; hora entrada tarde; hora salida tarde y suma horas tarde - y por último suma de horas.
La macro que tengo hace correctamente el trabajo, el único fallo que tiene es que si hago un turno solo de mañana o de tarde entonces me da error.
Espero que me podáis ayudar. Muchas gracias como siempre.
-Este es el código de la macro:

Sub sumarHoras(controal As IRibbonControl)
  Application.ScreenUpdating = False
  Dim baseM As Range, baseT As Range
  With Worksheets("calendarioanual").Range("d10").CurrentRegion
    With .Offset(1).Resize(.Rows.Count - 1)
      .Columns(6).ClearContents
      .Columns(9).ClearContents
      .Columns(10).ClearContents
      Set baseM = .Columns(5).SpecialCells(xlCellTypeConstants).EntireRow
      Set baseT = .Columns(8).SpecialCells(xlCellTypeConstants).EntireRow 'Aqu? me salta el error cuando solo pongo horas de ma?ana
      With Intersect(baseM, .Columns(6))
        .Formula = "=" & .Cells(1).Offset(, -1).Address(0, 0) & _
                          "-" & .Cells(1).Offset(, -2).Address(0, 0): End With
      With Intersect(baseT, .Columns(9))
        .Formula = "=" & .Cells(1).Offset(, -1).Address(0, 0) & _
                          "-" & .Cells(1).Offset(, -2).Address(0, 0): End With
      With Intersect(baseM, .Columns(10))
        .Formula = "=" & .Cells(1).Offset(, -4).Address(0, 0) & _
                          "+" & .Cells(1).Offset(, -1).Address(0, 0): End With
      With .Columns(6): .Value = .Value: End With
      With .Columns(9): .Value = .Value: End With
      With .Columns(10): .Value = .Value: End With
    End With
  End With
End Sub

Añade tu respuesta

Haz clic para o