#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))