Невозможно сохранить выбранный диапазон в переменную

#vba

#vba

Вопрос:

У меня есть следующий код, который выбирает все используемые ячейки, начиная с указанной ячейки.

 Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Dim ranged_select As Range

Set sht = Worksheets("Worksheet1")
Set StartCell = Range("C2")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'Select Range
  sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
  

Но как получилось для последней строки
sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
Я не могу назначить его переменной? Я хочу, чтобы переменная была диапазоном. Я пытался присвоить эту переменную Dim used_ranged as Range , но она выдает мне «ошибку времени выполнения»91»: ‘

Вот данные и как они выглядят, когда я запускаю код, который просто выбирает данные, начиная с C2.

введите описание изображения здесь

Комментарии:

1. Set StartCell = sht.Range("C2") или по умолчанию будет использоваться то, что является ActiveSheet. Если вам нужен диапазон в переменной, вам нужно удалить .Select , поскольку это не возвращает ничего, что вы можете назначить своему переменному.

2. Спасибо за ответ, я внес два изменения, но тот же код ошибки все еще появляется.

Ответ №1:

 Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Dim range_select As Range

Set sht = Worksheets("Worksheet1")
Set StartCell = sht.Range("C2")    '<< always be explicit about the parent sheet

'Find Last Row and Column
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'drop the .Select
Set range_select = sht.Range(StartCell, sht.Cells(LastRow, LastColumn))