I'd use:

Code:
Sub M_snb()
   sn = Sheet1.Cells(1).CurrentRegion
   
   c01 = "1"
   For j = 2 To UBound(sn)
       sn(j, 3) = Replace(sn(j, 3), ",", ";")
       For Each it In Filter(Split(sn(j, 3), ";"), "-")
         sn(j, 3) = Replace(sn(j, 3), it, " " & Join(Evaluate("transpose(row(" & Split(it, "-")(0) & ":" & Split(it, "-")(1) & "))"), "; "))
       Next
       
       c01 = c01 & Replace(Space(UBound(Split(sn(j, 3), ";")) + 1), " ", "," & j)
       c02 = c02 & ";" & sn(j, 3)
   Next
   sp = Application.Transpose(Split(c01, ","))
   st = Split(c02, ";")
   
   sp = Application.Index(sn, sp, [transpose(row(1:8))])
   
   For j = 1 To UBound(st)
      sp(j + 1, 3) = st(j)
      sp(j + 1, 5) = CDate(sp(j + 1, 5))
   Next
   
   Cells(10, 1).Resize(UBound(sp), UBound(sp, 2)) = sp
End Sub