Для объединения требуется как минимум два объекта Range, а не одна строка.
Ваша первая попытка генерирует их, поскольку строки не инкапсулированы как строковый литерал.Ваш второй нет, поэтому передается одна строка, а не два диапазона.
Объединение
Возвращает объединение двух или более диапазонов.
Синтаксическое выражение.
Союз ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9 , Arg10 , Arg11 , Arg12, Arg13 , Arg14 , Arg15 , Arg16 , Arg17 , Arg18 , Arg19 , Arg20 , Arg21 , Arg22 , Arg23 , Arg24 , Arg25 , Arg26 , Arg27 , Arg28 , Arg29 , Arg30 )
Параметры
Name Required/Optional Data type Description
Arg1 Required Range At least two Range objects must be specified.
Arg2 Required Range At least two Range objects must be specified.
Arg3 Optional Variant A range.
Запрошенный пример:
Option Explicit
Public Sub RangeExpresion()
Dim str As String, s, rng1 As Range, rng2 As Range
str = "2,10"
s = Split(str, ",")
Set rng1 = rows("" & s(0) & "")
Set rng2 = rows("" & s(1) & "")
Union(rng1, rng2).Select '<==Testing only. You should avoid .Select
End Sub
Хотя комментарий jkpieterse о лучшем способе верен.Union(Rows(s(0)), Rows(s(1)))