Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?

Я нашел аналогичное решение этого вопроса в c # … См. Ссылку ниже

Как выбрать все ячейки на листе в Excel. Изменить объект c #?

У кого-нибудь есть фрагмент, чтобы сделать это в VBA? Я не очень хорошо знаком с VBA, так что это было бы полезно. Вот что у меня есть до сих пор …

Обычно я выбираю данные, используя «ctrl + shift over arrow, стрелка вниз», чтобы выбрать весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует A1: Q398247930, например. Мне нужно, чтобы это было просто

.SetRange Range("A1:whenever I run out of rows and columns") 

Это очень просто, и я мог легко сделать это сам без макроса, но я пытаюсь сделать весь процесс макросом, и это всего лишь его часть.

 Sub sort() 'sort Macro Range("B2").Select ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Master").sort .SetRange Range("A1:whenever I run out of rows and columns") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub 

edit: Есть другие части, где я могу использовать один и тот же код, но диапазон говорит «C3: Конец строк и столбцов». Есть ли способ в VBA получить местоположение последней ячейки в документе?

Благодаря!

Я считаю, что вы хотите найти текущую область A1 и окружающих клеток – не обязательно все ячейки на листе. Если это так – просто используйте … Range («A1»). CurrentRegion

Вы можете просто использовать cells.select чтобы выбрать все ячейки на листе. Вы можете получить действительный адрес, указав Range(Cells.Address) .

Если вы хотите найти последний Used Range котором вы изменили форматирование или ввели значение, вы можете вызвать ActiveSheet.UsedRange и выбрать его там. надеюсь, это поможет

вы можете использовать все ячейки как объект:

 Dim x as Range Set x = Worksheets("Sheet name").Cells 

X теперь является объектом диапазона, который содержит весь рабочий лист

у вас есть несколько вариантов:

  1. Использование свойства UsedRange
  2. найти последнюю строку и столбец
  3. используйте мимик сдвига вниз и сдвиг вправо

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

Вот как вы это сделаете, используя свойство UsedRange:

 Sheets("Sheet_Name").UsedRange.Select 

Этот оператор будет выбирать все используемые диапазоны на листе, обратите внимание, что иногда это не очень хорошо работает при удалении столбцов и строк.

Альтернативой является поиск самой последней ячейки, используемой на листе

 Dim rngTemp As Range Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) If Not rngTemp Is Nothing Then Range(Cells(1, 1), rngTemp).Select End If 

Что делает этот код:

  1. Найти последнюю ячейку, содержащую любое значение
  2. выберите ячейку (1,1) полностью в последнюю ячейку

Я бы рекомендовал записывать макрос, например, найденный в этом сообщении;

Макрос Excel VBA для фильтрации записей

Но если вы хотите найти конец своих данных, а не конец необходимой книги, если между началом и концом ваших данных нет пустых ячеек, я часто использую что-то вроде этого;

 R = 1 Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1)) R = R + 1 Loop Range("A5:A" & R).Select 'This will give you a specific selection 

Вы останетесь с R = до номера строки после завершения ваших данных. Это также можно использовать для столбца, а затем вы можете использовать что-то вроде Cells (C, R). Выберите, если вы сделали C представление столбца.

Возможно, это может сработать:

Sh.Range («A1», Sh.Range («A» и Rows.Count) .End (xlUp))

Обращаясь к самому первому вопросу, я изучаю то же самое. Результат, который я получаю, записывая макрос, начинается с выбора ячейки A76:

 Sub find_last_row() Range("A76").Select Range(Selection, Selection.End(xlDown)).Select End Sub 
 Sub SelectAllCellsInSheet(SheetName As String) lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select End Sub 

Для использования с ActiveSheet:

 Call SelectAllCellsInSheet(ActiveSheet.Name) 
  • Excel Найти и заменить текст в формуле
  • Макрос не удалит все пустые ячейки
  • выпадающее меню без скрытых строк, как игнорировать скрытые?
  • Сравните две ячейки на основе их цвета
  • #СТОИМОСТЬ! при использовании нескольких операторов IF
  • excel - если ячейка содержит элемент, установите другую ячейку на сегодняшнюю дату
  • Как я могу выровнять 2 отдельных больших электронных листа в Excel?
  • Excel VBA Autofilter - несколько критериев «начать с»
  • Сортировка столбцов в строки (со случайной длиной) по ключевым столбцам
  • VBA распознает книгу с помощью частичного имени
  • Можно ли использовать IsEmpty для ссылки на другой лист и скрыть столбец?
  • Interesting Posts

    VBA. Отображение того, сколько времени понадобилось подпункту

    Datatable auto convert "0.000095" в "9.5E-05"

    заполнять данные текстового поля при нажатии на один из элементов в списке

    Как читать значение каждой ячейки в строке листа Excel, если значение 1-й и последней ячейки равно Null или Пустое?

    Excel VBA копия с одного листа на другой wb не переписывает данные

    Чтение данных Excel в столбцах с использованием OpenXML

    Программно изменить высоту строки в Excel

    Подсчет с несколькими условиями по столбцам

    Перемещение некоторых строк при сохранении оригинальных идентификаторов на обоих листах

    Excel – Затенение всего столбца на основе одного значения

    C ++ – вывод результата в xlsx (электронная таблица), а не CSV

    Специальные символы не отображаются правильно в Excel с использованием скрипта Python

    VBA копирует несколько разделов в память для размещения / вставки в новый рабочий лист

    Выберите значение, связанное с последней датой в таймфрейме

    Создавать значения с разделителями-запятыми в Excel (используя сводную таблицу)?

    Давайте будем гением компьютера.