it-roy-ru.com

Как выбрать весь лист Excel с помощью Range, используя макрос в VBA?

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

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

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

Я обычно выбираю данные, используя «Ctrl + стрелка над стрелкой, стрелка вниз», чтобы выбрать весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует 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 есть способ получить местоположение последней ячейки в документе?

Спасибо!

20
matrixugly

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

24
ExcelExpert

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

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

19
chancea

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

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

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

7
user4791681

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

  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) до последней ячейки
4
Derek Cheng

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

макрос 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 представлением столбца. 

1
MakeCents

Может быть, это может сработать:

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

0
Sarah

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

Sub find_last_row()
    Range("A76").Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub
0
Pavlin Todorov
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)
0
Yehia Amer