Diadema  Цитата: Значит если считывать range всегда будет значение типа Variant? 
  Не всегда, если обращение к одиночной ячейке, то Range("A1").Value может быть String, Double, Date, Currency  
Цитата: еще вопрос такой, как найти адрес самого правого заполненного столбца в таблице с разным количеством заполненных строк
  Если под таблицей понимать область данных, где нет сквозных пропусков по строкам и столбцам (любая ячейка таблицы с данными имеет хотя бы одну соседнюю ячейку с даными, хотя бы по диагонали), то можно воспользоваться 
 LastCol = Cells(i, j).CurrentRegion.Columns.Count + Cell(i, j).CurrentRegion.Column - 1& 
 где i, j индексы строки/столбца ячейки, которая гарантированно находится внутри твоей таблицы