Если вы не возражаете оценки строки адреса ... с помощью ".EntireRow.Address (False, False)" мы получаем строку, которая легко разобраны ...
C# ...
int maxRow = range.EntireRow.Address(false, false).Split(",:".ToCharArray()).Select(n => int.Parse(n)).Max();
string maxCol = range.EntireColumn.Address(false, false).Split(",:".ToCharArray()).Select(s => s.PadLeft(3)).Max().Trim();
VB ...;
Dim maxRow As Integer = -1
Dim maxCol As String = ""
range = ws.Range("$BB9:$C11")
maxRow = range.EntireRow.Address(False, False).Split(",:".ToCharArray()).Select(Function(n) Integer.Parse(n)).Max() ' 9:11
maxCol = range.EntireColumn.Address(False, False).Split(",:".ToCharArray()).Select(Function(s) s.PadLeft(3)).Max().Trim() ' C:BB
заданный диапазон BB9: C11
MAXROW является 11 от 9:11 ... если не разбирается в целое, то Max() будет 9 из-за строки сортировки
MAXCOL является "BB" от C: BB ... если не проложенный слева, то Max() будет "C" из-за строки сортировки
range = ws.Range("A1:A3,AE15:AE9,C4:C7")
maxRow = range.EntireRow.Address(False, False).Split(",:".ToCharArray()).Select(Function(n) Integer.Parse(n)).Max() ' 1:3,9:15,4:7
maxCol = range.EntireColumn.Address(False, False).Split(",:".ToCharArray()).Select(Function(s) s.PadLeft(3)).Max().Trim() ' 1:3,9:15,4:7
и учитывая диапазон несмежных диапазон: A1: A3, Æ15: AE9, C4: C7
MAXROW 15 от 1: 3,9: 15,4: 7 ... даже с несмежных диапазона, а также ссылки из заказа = Æ15: AE9
MAXCOL является "АЕ" от C: А.Е. ... даже с Непоследовательным диапазоном
это работа с цельным выбором COLUMN «A:»
это не работает с цельным выбором строки «3: 3»