Andy G が述べているように、セルが空の場合はチェックを実行し、空の場合はスキップする必要があります。
次のようにできます。
Sub TimeCreator()
Dim r As Range, t As String
For Each r In Selection
If r.Value <> Empty Then 'test if the cell is blank (note, a zero length string is not blank in Excel)
t = r.Text
'r.Clear is unnecessary as you assign to r.Value
r.Value = TimeSerial(Mid(t, 9, 2), Mid(t, 11, 2), Right(t, 2))
r.NumberFormat = "[h]:mm ""IT"""
End If
Next
End Sub
ただし、最初に値を持つセルでのみマクロを実行することをお勧めします。これは、次のように Range.SpecialCells() を使用して実行できます。
Sub TimeCreator()
Dim r As Range, rangeToRunOn As Range, t As String
Set rangeToRunOn = Selection.SpecialCells( _
xlCellTypeConstants, _
xlTextValues OR xlNumbers)
If Not rangeToRunOn is Nothing Then
For Each r In rangeToRunOn
t = r.Text
'r.Clear is unnecessary as you assign to r.Value
r.Value = TimeSerial(Mid(t, 9, 2), Mid(t, 11, 2), Right(t, 2))
r.NumberFormat = "[h]:mm ""IT"""
Next
End If
End Sub