Здесь есть несколько проблем.
Сначала ваши операторы Dim должны быть внутри подпрограммы. Далее, вы не можете объединить nothing
, поэтому вам нужно проверить, назначен ли finalrange что-либо еще, а затем решить, как его обработать - в этом случае, если он не назначил его просто t
, в противном случае union
. Наконец, вам не нужно «приложение». до union
.
Sub selectallbattleships()
Dim t As Range
Dim finalrange As Range
For Each t In Range("A1:J10")
If t.Value = "D" Then
If finalrange Is Nothing Then
Set finalrange = t
Else
Set finalrange = Union(finalrange, t)
End If
End If
Next t
finalrange.Select
End Sub