I think:
selection.row
will give you the first row and
selection.rows
will give you the last row, so you would want:
sub macro_1()
dim count
for count = selection.row to selection.row + selection.rows
   Range("D" & count) = mid(Range("C" & count),1,3)
   'and so on
next
end sub