Как выделить весь лист excel vba

I found a similar solution to this question in c# How to Select all the cells in a worksheet in Excel.Range object of c#?

What is the process to do this in VBA?

I select data normally by using «ctrl+shift over arrow, down arrow» to select an entire range of cells. When I run this in a macro it codes out A1:Q398247930, for example. I need it to just be

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

I could easily do it myself without a macro, but I’m trying to make the entire process a macro, and this is just a piece of it.

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:
There are other parts where I might want to use the same code but the range is say «C3:End of rows & columns». Is there a way in VBA to get the location of the last cell in the document?

asked Jul 30, 2013 at 18:50

C. Tewalt's user avatar

C. TewaltC. Tewalt

2,2612 gold badges29 silver badges47 bronze badges

I believe you want to find the current region of A1 and surrounding cells — not necessarily all cells on the sheet.
If so — simply use…
Range(«A1»).CurrentRegion

answered Jul 30, 2013 at 19:17

ExcelExpert's user avatar

ExcelExpertExcelExpert

3522 silver badges4 bronze badges

1

You can simply use cells.select to select all cells in the worksheet. You can get a valid address by saying Range(Cells.Address).

If you want to find the last Used Range where you have made some formatting change or entered a value into you can call ActiveSheet.UsedRange and select it from there. Hope that helps.

June7's user avatar

June7

19.5k8 gold badges24 silver badges33 bronze badges

answered Jul 30, 2013 at 19:11

chancea's user avatar

chanceachancea

5,8083 gold badges28 silver badges39 bronze badges

2

you can use all cells as a object like this :

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

X is now a range object that contains the entire worksheet

answered Apr 15, 2015 at 11:47

user4791681's user avatar

you have a few options here:

  1. Using the UsedRange property
  2. find the last row and column used
  3. use a mimic of shift down and shift right

I personally use the Used Range and find last row and column method most of the time.

Here’s how you would do it using the UsedRange property:

Sheets("Sheet_Name").UsedRange.Select

This statement will select all used ranges in the worksheet, note that sometimes this doesn’t work very well when you delete columns and rows.

The alternative is to find the very last cell used in the worksheet

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

What this code is doing:

  1. Find the last cell containing any value
  2. select cell(1,1) all the way to the last cell

Faisal Mehmood's user avatar

answered Jul 30, 2013 at 20:32

Derek Cheng's user avatar

Derek ChengDerek Cheng

5353 silver badges8 bronze badges

3

Another way to select all cells within a range, as long as the data is contiguous, is to use Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select.

answered Mar 29, 2019 at 19:38

Bob the Builder's user avatar

I would recommend recording a macro, like found in this post;

Excel VBA macro to filter records

But if you are looking to find the end of your data and not the end of the workbook necessary, if there are not empty cells between the beginning and end of your data, I often use something like this;

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

You are left with R = to the number of the row after your data ends. This could be used for the column as well, and then you could use something like Cells(C , R).Select, if you made C the column representation.

Community's user avatar

answered Jul 30, 2013 at 19:25

MakeCents's user avatar

MakeCentsMakeCents

7321 gold badge5 silver badges15 bronze badges

2

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

To use with ActiveSheet:

Call SelectAllCellsInSheet(ActiveSheet.Name)

answered Mar 14, 2017 at 20:57

Yehia Amer's user avatar

Yehia AmerYehia Amer

5985 silver badges11 bronze badges

Here is what I used, I know it could use some perfecting, but I think it will help others…

''STYLING''

Dim sheet As Range

' Find Number of rows used
Dim Final As Variant
    Final = Range("A1").End(xlDown).Row

' Find Last Column
Dim lCol As Long
    lCol = Cells(1, Columns.Count).End(xlToLeft).Column

Set sheet = ActiveWorkbook.ActiveSheet.Range("A" & Final & "", Cells(1, lCol ))
With sheet
    .Interior.ColorIndex = 1
End With

answered Mar 16, 2019 at 4:29

FreeSoftwareServers's user avatar

I have found that the Worksheet «.UsedRange» method is superior in many instances to solve this problem.
I struggled with a truncation issue that is a normal behaviour of the «.CurrentRegion» method. Using [ Worksheets(«Sheet1»).Range(«A1»).CurrentRegion ] does not yield the results I desired when the worksheet consists of one column with blanks in the rows (and the blanks are wanted). In this case, the «.CurrentRegion» will truncate at the first record. I implemented a work around but recently found an even better one; see code below that allows copying the whole set to another sheet or to identify the actual address (or just rows and columns):

Sub mytest_GetAllUsedCells_in_Worksheet()
    Dim myRange

    Set myRange = Worksheets("Sheet1").UsedRange
    'Alternative code:  set myRange = activesheet.UsedRange

   'use msgbox or debug.print to show the address range and counts
   MsgBox myRange.Address      
   MsgBox myRange.Columns.Count
   MsgBox myRange.Rows.Count

  'Copy the Range of data to another sheet
  'Note: contains all the cells with that are non-empty
   myRange.Copy (Worksheets("Sheet2").Range("A1"))
   'Note:  transfers all cells starting at "A1" location.  
   '       You can transfer to another area of the 2nd sheet
   '       by using an alternate starting location like "C5".

End Sub

answered May 2, 2019 at 19:38

Lifygen's user avatar

Maybe this might work:

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

answered Oct 31, 2014 at 18:38

Sarah's user avatar

Refering to the very first question, I am looking into the same.
The result I get, recording a macro, is, starting by selecting cell A76:

Sub find_last_row()
    Range("A76").Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub

answered Aug 7, 2015 at 12:40

Pavlin Todorov's user avatar

Вопрос:

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

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

У кого-нибудь есть фрагмент, чтобы сделать это в 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

редактировать: есть другие части, где я мог бы использовать тот же код, но диапазон, скажем, “C3: конец строк и столбцов”. В VBA есть способ получить местоположение последней ячейки в документе?

Спасибо!

Лучший ответ:

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

Ответ №1

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

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

Ответ №2

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

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

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

Ответ №3

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

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

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

Вот как вы это сделаете, используя свойство 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,1) до последней ячейки

Ответ №4

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

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

Ответ №5

Вот то, что я использовал, я знаю, что это может использовать некоторые усовершенствования, но я думаю, что это поможет другим…

''STYLING''

Dim sheet As Range

' Find Number of rows used
Dim Final As Variant
Final = Range("A1").End(xlDown).Row

' Find Last Column
Dim lCol As Long
lCol = Cells(1, Columns.Count).End(xlToLeft).Column

Set sheet = ActiveWorkbook.ActiveSheet.Range("A" & Final & "", Cells(1, lCol ))
With sheet
.Interior.ColorIndex = 1
End With

Ответ №6

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

Sh.Range( “A1”, Sh.Range( “A” и Rows.Count).End(xlUp))

Ответ №7

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

Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub

Ответ №8

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)

Ответ №9

Другой способ выбора всех ячеек в диапазоне, если данные непрерывны, состоит в использовании Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select.

Ответ №10

Я обнаружил, что метод “.UsedRange” на рабочем листе во многих случаях лучше для решения этой проблемы. Я боролся с проблемой усечения, которая является нормальным поведением метода .CurrentRegion. Использование [Worksheets (“Sheet1”). Range (“A1”). CurrentRegion] не дает желаемых результатов, когда рабочий лист состоит из одного столбца с пробелами в строках (и пробелы требуются). В этом случае “.CurrentRegion” будет обрезаться при первой записи. Я реализовал работу вокруг, но недавно нашел еще лучшую; см. код ниже, который позволяет скопировать весь набор на другой лист или идентифицировать фактический адрес (или только строки и столбцы):

Sub mytest_GetAllUsedCells_in_Worksheet()
Dim myRange

Set myRange = Worksheets("Sheet1").UsedRange
'Alternative code:  set myRange = activesheet.UsedRange

'use msgbox or debug.print to show the address range and counts
MsgBox myRange.Address
MsgBox myRange.Columns.Count
MsgBox myRange.Rows.Count

'Copy the Range of data to another sheet
'Note: contains all the cells with that are non-empty
myRange.Copy (Worksheets("Sheet2").Range("A1"))
'Note:  transfers all cells starting at "A1" location.
'       You can transfer to another area of the 2nd sheet
'       by using an alternate starting location like "C5".

End Sub

Содержание

  1. Как вы выбираете весь лист excel с помощью Range с помощью макроса в VBA?
  2. VBA в Excel Объект Excel.Worksheet и программная работа с листами Excel средствами VBA
  3. 10.5 Коллекция Sheets и объект Worksheet, их свойства и методы
  4. Как выделить все листы в excel
  5. Как выделить все листы в excel
  6. Дополнительные сведения
  7. Как сразу удалить несколько листов (вкладок) в книге Excel?
  8. Удаление нескольких листов.
  9. Как выделить все листы в excel
  10. Дополнительные сведения
  11. Выделение ячеек в Excel: строка, столбец, диапазон и лист целиком
  12. Выделение отдельной ячейки
  13. Выделяем столбец
  14. Выделяем строку
  15. Выделяем диапазон ячеек
  16. Выделяем все ячейки листа
  17. Горячие клавиши для выделения ячеек
  18. Заключение

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

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

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

Я обычно выбираю данные, используя “Ctrl + стрелка над стрелкой, стрелка вниз”, чтобы выделить весь диапазон ячеек. Когда я запускаю это в макросе, он кодирует A1: Q398247930, например. Мне нужно это просто

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

редактировать: есть другие части, где я мог бы использовать тот же код, но диапазон, скажем, “C3: конец строк и столбцов”. В VBA есть способ получить местоположение последней ячейки в документе?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот то, что я использовал, я знаю, что это может использовать некоторые усовершенствования, но я думаю, что это поможет другим…

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

Sh.Range( “A1”, Sh.Range( “A” и Rows.Count).End(xlUp))

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

Использовать с ActiveSheet:

Другой способ выбора всех ячеек в диапазоне, если данные непрерывны, состоит в использовании Range(«A1», Range(«A1»).End(xlDown).End(xlToRight)).Select .

Я обнаружил, что метод “.UsedRange” на рабочем листе во многих случаях лучше для решения этой проблемы. Я боролся с проблемой усечения, которая является нормальным поведением метода .CurrentRegion. Использование [Worksheets (“Sheet1”). Range (“A1”). CurrentRegion] не дает желаемых результатов, когда рабочий лист состоит из одного столбца с пробелами в строках (и пробелы требуются). В этом случае “.CurrentRegion” будет обрезаться при первой записи. Я реализовал работу вокруг, но недавно нашел еще лучшую; см. код ниже, который позволяет скопировать весь набор на другой лист или идентифицировать фактический адрес (или только строки и столбцы):

Источник

VBA в Excel Объект Excel.Worksheet и программная работа с листами Excel средствами VBA

10.5 Коллекция Sheets и объект Worksheet, их свойства и методы

Объект Excel.Worksheet, программное создание, обнаружение, удаление листа Excel средствами VBA, свойства, методы и события объекта Excel.Worksheet

В Word ниже объекта Application и Document начинались уже объекты непосредственно для работы с текстом — Selection, Range и т.п. В Excel между объектом рабочей книги и ячейками есть еще один промежуточный объект — объект Worksheet (лист). Объекты Worksheet в книге объединены в коллекцию Sheets.

Чаще всего для ввода данных в Excel (напрямую или из базы данных) нам потребуется в первую очередь определиться с листом, на который пойдет ввод данных — либо просто выбрать его, либо вначале создать, а потом выбрать.

Процесс создания выглядит очень просто:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add () ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Add() ‘ Создаем новый лист

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Метод Add() для коллекции Worksheets принимает несколько необязательных параметров, главная задача которых — определить, между какими существующими листами будет вставлен новый лист. Если ничего не указывать, то новый лист будет помещен самым первым.

Часто встречается и другая задача — просто найти нужный лист среди листов книги, например, если мы открыли существующую книгу. Сделать это очень просто, поскольку коллекция Worksheets умеет работать с именами листов. Ниже приведен пример, в котором мы так же запускаем Excel и создаем новую книгу, но при этом находим лист с именем «Лист1» и переименовываем его в «Новый лист»:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add() ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Item(«Лист 1») ‘ Находим Лист1

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Обратите внимание, что в английской версии Excel этот код, скорее всего, не пройдет, поскольку листы там по умолчанию называются «Sheet1», «Sheet2» и т.п. Если вы в вашем коде используете имена листов по умолчанию и при этом вашей программе придется работать на компьютерах с разноязычными версиями Excel, обязательно предусмотрите дополнительные проверки или просто используйте номера листов вместо их имен.

У коллекции Sheets, помимо привычных нам свойств и методов ( Count, Item, Add(), Delete()) и свойств и методов, которые удобнее применять для объекта Worksheet ( Visible(), Copy(), Move(), PrintOut(), PrintPreview(), Select()) — поскольку все равно указывать конкретный лист — есть и один специфический метод FillAcrossSheets() — скопировать объект диапазона Range (варианты: полностью, только содержимое, только оформление) во все листы данной книги.

У объекта Worksheet — множество важных свойств и методов:

  • Cells — одно из наиболее часто используемых свойств объекта Worksheet. Работает точно так же, как и рассмотренное выше одноименное свойство объекта Application — за исключением того, что вам больше не нужно ограничиваться только активным листом. Аналогично работают свойства Columns и Rows.
  • EnableCalculation — возможность отключить автоматический пересчет значений ячеек в книге.
  • EnableSelection — возможность запретить выделять на листе: все, ничего не запрещать, или разрешить выделять только незаблокированные ячейки.
  • Next — возможность получить ссылку на следующий лист в книге. Previous — то же самое для предыдущего листа.
  • PageSetup — как и в Word, возможность получить объект PageSetup, при помощи которого можно настроить те же параметры, что и через меню Файл ->Параметры страницы.
  • свойство Protection позволяет получить объект Protection, при помощи которого можно запретить пользователю вносить изменения в лист Excel. Настройке параметров защиты также служат и другие свойства, названия которых начинаются на Protection.
  • QueryTables — исключительно важное свойство. Оно возвращает коллекцию QueryTables — набор объектов QueryTable, которые, в свою очередь, представляют данные, полученные из внешних источников (как правило, из баз данных).
  • Range — самое важное свойство объекта Worksheet. Возвращает объект Range (диапазон ячеек), который в объектной модели Excel занимает примерно такое же место, что и одноименный объект в объектной модели Word. Этот объект будет рассматриваться ниже.
  • Type — возможность определить тип данного листа. Обычно используются два типа: xlWorksheet (обычный лист) и xlChart (диаграмма).
  • UsedRange — возвращает объект Range, представляющий собой прямоугольную область, включающую все непустые ячейки. Удобно для целей копирования или форматирования.
  • Visible — возможность спрятать лист с глаз пользователя (например, если он используется для служебных целей).

Некоторые важные методы объекта Worksheet:

  • методы Activate() , Calculate(), Copy(), Paste(), Delete(), Move(), Evaluate(), Select(), SaveAs(), PrintOut(), PrintPreview(), Protect(), Unprotect()нам уже знакомы . Отличие заключается только в том, что теперь эти методы могут применяться для выбранного вами листа.
  • метод PivotTables() возвращает коллекцию очень интересных объектов PivotTable (сводная таблица), которые будут рассматриваться ниже;
  • метод Scenarios() возвращает коллекцию Scenarios, состоящую из объектов Scenario (сценарии). Сценарии — это именованные наборы вводных данных, которые можно использовать для проверки различных сценариев (разные суммы продаж, уровни налогов, расходов и т.п.)
  • SetBackgroundPicture() — возможность назначить листу фоновое изображение (естественно, желательно, чтобы оно было полупрозрачное — «водяной знак», иначе на его фоне будет трудно читать текст в ячейках).
  • ShowAllData() — показать все скрытые и отфильтрованные данные на листе.

Самое важное событие объекта Worksheet — это, конечно, Change. Существует множество практических задач, когда изменение пользователем значения ячейки должно приводить к изменению значения в ячейке другого листа/рабочей книги Excel или даже в базе данных. Другая ситуация, в которой используется это события — сложная проверка вводимого пользователем значения (например, опять-таки через обращение к базе данных). Эта событийная процедура работает со специальным параметром Target — то есть объектом Range, представляющим изменившуюся ячейку. При помощи свойств и методов объекта Range вы можете получить информацию об изменившемся значении, столбце и строке, в котором произошло изменение и т.п.

У объекта Worksheet есть еще два очень удобных события (их сильно не хватает объекту Document в Word). Это — события BeforeRightClick() и BeforeDoubleClick(). Как понятно из названия, первое событие позволяет перехватывать щелчок правой кнопкой мыши по любому месту в листе, а второе — двойной щелчок мышью. При помощи этих событий вы можете назначить свою реакцию (открытие контекстных меню, выдачу предупреждающих сообщений, переход в другой режим работы и т.п.) на действия пользователя.

Источник

Как выделить все листы в excel

Как выделить все листы в excel

Вы можете быстро выбрать один или несколько листов, щелкнув по ярлычкам листов в нижней части окна Excel. Можно ввести или изменить данные на нескольких листах одновременно, выделив и сгруппировав их. Кроме того, в Excel можно одновременно отформатировать или распечатать несколько выделенных листов.

Выполните следующие действия

Выберите ярлычок листа, который нужно изменить. Активный лист будет отличаться по цвету от остальных. В данном случае выбран Лист 4.

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

Несколько смежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу SHIFT, щелкните ярлычок последнего листа в диапазоне, который требуется выделить.

На клавиатуре: сначала нажмите F6, чтобы активировать ярлычки листов. Затем с помощью клавиш СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО выберите нужный лист и нажмите CTRL+SPACE для его выделения. Повторите действия со стрелками и нажатием клавиш CTRL+SPACE для выбора дополнительных листов.

Несколько несмежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу CTRL, щелкните ярлычки других листов, которые нужно выделить.

На клавиатуре: сначала нажмите F6, чтобы активировать ярлычки листов. Затем с помощью клавиш СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО выберите нужный лист и нажмите CTRL+SPACE для его выделения. Повторите действия со стрелками и нажатием клавиш CTRL+SPACE для выбора дополнительных листов.

Все листы книги

Щелкните правой кнопкой мыши ярлычок листа и выберите в контекстном меню команду Выделить все листы.

СОВЕТ: После выбора нескольких листов в заголовке в верхней части листа отображается надпись [Группа]. Чтобы отменить выделение нескольких листов книги, щелкните любой невыделенный лист. Если невыделенных листов нет, щелкните правой кнопкой мыши ярлычок выделенного листа и в контекстном меню выберите команду Разгруппировать листы.

Изменения, вносимые на активном листе, отражаются на всех выделенных листах. При внесении изменений данные заменяются не только на активном листе, но и на других (иногда пользователи забывают об этом).

Данные, скопированные или вырезанные из сгруппированных листов, нельзя вставить на другой лист, поскольку область копирования включает все слои выделенных листов (отличаясь по размеру от области вставки на отдельном листе). Перед копированием или переносом данных на другой лист убедитесь, что выделен только один лист.

Если сохранить и закрыть книгу со сгруппированными листами, при последующем открытии файла выделенные листы останутся сгруппированными.

В Excel для Интернета нельзя одновременно выбрать больше одного листа, но выбрать нужный лист очень просто.

Щелкните меню Все листы и выберите лист, который нужно открыть.

Из листов, перечисленных внизу, выберите имя листа, который нужно открыть. Чтобы увидеть те листы, которые в данный момент не видны, выполняйте прокрутку вперед и назад с помощью стрелок, расположенных рядом с меню «Все листы».

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Как сразу удалить несколько листов (вкладок) в книге Excel?

Никогда не задавался вопросом удаления нескольких вкладок книги Excel одним действием, это действие мне всегда казалось довольно простым и интуитивно понятным, но сегодня ко мне подошел довольно грамотный коллега и спросил: «Не знаешь, как одним действием сразу удалить много листов в Excel?».

Много листов в Эксель

Я немного опешил и показал ему способ удаления нескольких листов в книге.
Делается это довольно просто и основывается на стандартных сочетаниях клавиш в программах MS Office.

Удаление нескольких листов.

Шаг номер 1.
Выделить первый лист книги, который хотите удалить, кликнув по нему левой кнопкой мыши.

Шаг номер 2.
Зажать клавишу «Shift» на клавиатуре

Нажать клавишу Shift

Шаг номер 3.
Кликнуть на последний лист левой кнопкой мыши. (все листы между первым и последним будут выделены).

Выделение нескольких листов (ярлыков)

Шаг номер 4
Кликните правой кнопкой мыши по выделенным вкладкам (листам) и выберите из контекстного меню пункт «Удалить».

Примечание:
Если Вам необходимо удалить листы расположенные не по порядку, зажмите клавишу «ctrl» и выделяйте листы левой кнопкой мыши, не отпуская клавиши «ctrl».

Как выделить все листы в excel

Щелкая ярлычки листов в нижней части окна Excel, вы можете быстро выбрать один или несколько листов. Для одновременного ввода и изменения данных на нескольких листах можно группировать листы, выбирая несколько листов. Кроме того, в Excel можно одновременно отформатировать или распечатать несколько выделенных листов.

Выполните следующие действия

Щелкните ярлычок листа, который вы хотите изменить. На активном листе цвет будет отличаться от других листов. В этом случае Sheet4 выбран.

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

Несколько смежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу Shift , щелкните ярлычок последнего листа, который вы хотите выделить.

С помощью клавиатуры: сначала нажмите клавишу F6 , чтобы активировать ярлычки листов. Нажимайте клавишу Стрелка влево или вправо для выбора нужного листа, и вы можете использовать сочетание клавиш Ctrl + пробел , чтобы выделить этот лист. Повторите стрелки и Ctrl + пробел , чтобы выбрать дополнительные листы.

Несколько несмежных листов

Щелкните ярлычок первого листа, а затем, удерживая нажатой клавишу CTRL , щелкните вкладки остальных листов, которые нужно выделить.

С помощью клавиатуры: сначала нажмите клавишу F6 , чтобы активировать ярлычки листов. Нажимайте клавишу Стрелка влево или вправо для выбора нужного листа, и вы можете использовать сочетание клавиш Ctrl + пробел , чтобы выделить этот лист. Повторите стрелки и Ctrl + пробел , чтобы выбрать дополнительные листы.

Все листы книги

Щелкните правой кнопкой мыши ярлычок листа и выберите пункт выделить все листы .

ПЕРО После выбора нескольких листов в заголовке в верхней части листа появится надпись [Группа] . Чтобы отменить выделение нескольких листов книги, щелкните любой невыделенный лист. Если невыделенных листов нет, щелкните правой кнопкой мыши ярлычок выделенного листа и в контекстном меню выберите команду Разгруппировать листы.

Данные, которые вы вводите или редактируете на активном листе, отображаются на всех выбранных листах. Эти изменения могут заменять данные на активном листе и (возможно, непреднамеренно) на других выбранных листах.

Данные, которые вы копируете или вырезаете на сгруппированные листы, невозможно вставить на другой лист, так как размер области копирования включает все слои выбранных листов (которые отличаются от области вставки на одном листе). Перед копированием или перемещением данных на другой лист необходимо убедиться, что выделена только одна страница.

Если сохранить и закрыть книгу со сгруппированными листами, при последующем открытии файла выделенные листы останутся сгруппированными.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Выделение ячеек в Excel: строка, столбец, диапазон и лист целиком

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

Выделение отдельной ячейки

Пожалуй, это одно из самых простых и базовых действий, выполняемых в Эксель. Чтобы выделить конкретную ячейку щелкаем по ней левой кнопкой мыши.

Чтобы отметить нужную ячейку можно использовать навигационные клавиши на клавиатуре: “вправо”, “влево”, вверх”, “вниз”.

Выделяем столбец

Выделить столбец в Эксель можно несколькими способами:

  1. Зажав левую кнопку мыши тянем ее указатель от первой ячейки до последней, после чего отпускаем кнопку. Действие можно выполнять как сверху вниз (первая ячейка – самая верхняя, последняя – самая нижняя), так и снизу вверх (первая ячейка – самая нижняя, последняя – самая верхняя).
  2. Щелкаем по первой ячейке столбца, далее зажав клавишу Shift, кликаем по последней ячейке столбца, после чего отпускаем клавишу Shift. Как и в первом способе, выделение можно выполнять в обе стороны: и вверх, и вниз.
  3. Также, вместо мыши вместе с Shift мы можем использовать клавиши навигации. Щелкаем по первой ячейке столбца, далее зажимаем Shift, после чего нажимаем клавишу вверх (или вниз в зависимости от того, какую ячейку мы выбрали в качестве первой – самую верхнюю или самую нижнюю) ровно столько раз, сколько ячеек мы хотим добавить в выделяемый диапазон. Одно нажатие на клавишу – одна ячейка. После того, как все нужные элементы отмечены, отпускаем клавишу Shift.
  4. Кликаем по первой ячейка столбца, после чего нажимаем сочетание клавиш Ctrl+Shif+стрелка вниз. В результате будет выделен весь столбец, охватив все ячейки, в которых есть данные. Если мы хотим выполнить выделение снизу вверх, то соответственно, нажимаем комбинацию Ctrl+Shif+стрелка вверх, предварительно встав в самую нижнюю ячейку.Тут есть один нюанс. При использовании данного способа нужно убедиться в том, что в отмечаемом столбце нет пустых элементов, иначе выделение будет произведено лишь до первой незаполненной ячейки.
  5. Когда вместо выделения столбца таблицы нужно отметить весь столбец книги, щелкаем по его обозначению на координатной панели (курсор должен изменить свой привычный вид на стрелку, направленную вниз):
  6. В случае, когда требуется одновременное выделение нескольких столбцов книги, расположенных подряд, зажав левую кнопку мыши проводим курсором по всем нужным наименованиям столбцов на координатной панели.
  7. Также для этих целей можно воспользоваться клавишей Shift. Щелкаем по первому столбцу на панели координат, затем, зажав клавишу Shift, кликаем по последнему, после чего отпускаем клавишу.
  8. В случаях, когда столбцы расположены не подряд, зажав клавишу Ctrl на клавиатуре щелкаем на координатной панели по наименованиям всех нужных столбцов, после чего отпускаем клавишу.

Выделяем строку

По такому же алгоритму производится выделение строк в Excel. Выполнить это можно разными способами:

  1. Чтобы выделить одну строку в таблице, зажав левую кнопку мыши, проходим по всем нужным ячейкам (слева направо или наоборот), после чего отпускаем кнопку.
  2. Кликаем по первой ячейки строки, затем, зажав клавишу Shift, щелкаем по последней ячейке, и отпускаем клавишу. Выполнять данную процедуру можно в обе стороны.
  3. Совместно с клавишей Shift вместо левой кнопки мыши можно использовать клавиши навигации. Кликаем по первой ячейке строки, зажимаем клавишу Shift и жмем клавишу вправо (или влево, в зависимости от того, какую ячейку мы выбрали в качестве первой – самую левую или самую правую). При таком выделении одно нажатие навигационной клавиши равно одной выделенной ячейке. Как только мы выделили все требуемые элементы, можно опускать клавишу Shift.
  4. Щелкаем по первой ячейке строки, затем жмем сочетание клавиш Ctrl+Shif+стрелка вправо.Таким образом, будет выделена вся строка с охватом всех заполненных ячеек, но с важной оговоркой – выделение будет выполнено до первой пустой ячейки. Если мы хотим выполнить выделение справа налево, следует нажать сочетание клавиш Ctrl+Shif+стрелка влево.
  5. Чтобы выделить строку не только таблицы, но и всей книги, кликаем по ее порядковому номеру на координатной панели (вид курсора при наведении на панель должен смениться на стрелку, направленную вправо).
  6. Когда требуется одновременное выделение нескольких соседних строк, зажав левую кнопку мыши проходим на координатной панели по всем требуемым порядковым номерам.
  7. Когда нужно сразу выделить несколько соседних строк книги, можно использовать клавишу Shift. Для этого кликаем на координатной панели по номеру первой строки, затем зажимаем клавишу Shift, кликаем по последней строке и отпускаем клавишу.
  8. Когда требуется выделение строк книги, расположенных не по соседству, зажав клавишу Ctrl на клавиатуре, поочередно щелкаем по обозначениям всех нужных строк на координатной панели.

Выделяем диапазон ячеек

В данной процедуре как и в тех, что были описаны ранее, нет ничего сложного, и она также выполняется разными способами:

  1. Зажав левую кнопку мыши проходим по всем ячейкам требуемой области, двигаясь по диагонали:
    • от самой верхней левой ячейки до самой нижней правой
    • от самой нижней правой ячейки до самой верхней левой
    • от самой верхней правой ячейки до самой нижней левой
    • от самой нижней левой ячейки до самой верхней правой
  2. Зажав клавишу Shift, кликаем по первой, а затем – по последней ячейкам требуемого диапазона. Направления выделения – те же, что и в первом способе.
  3. Встаем в первую ячейку требуемого диапазона, и зажав клавишу Shift, используем клавиши для навигации на клавиатуре, чтобы “дойти” таким образом до последней ячейки.
  4. Если нужно одновременно выделить как отдельные ячейки, так и диапазоны, причем, находящиеся не рядом, зажимаем клавишу Ctrl и левой кнопкой мыши выделяем требуемые элементы.

Выделяем все ячейки листа

Чтобы осуществить данную задачу, можно воспользоваться двумя разными способами:

  1. Щелкаем по небольшому треугольнику, направленному по диагонали вправо вниз, который расположен на пересечении координатных панелей. В результате будут выделены все элементы книги.
  2. Также можно применить горячие клавиши – Ctrl+A. Однако, тут есть один нюанс. Прежде, чем нажимать данную комбинацию, нужно перейти в любую ячейку за пределами таблицы. Если же мы будем находиться в пределах таблицы, то нажав на клавиши Ctrl+A, мы сначала выделим все ячейки именно самой таблицы. И только повторное нажатие комбинации приведет к выделению всего листа.

Горячие клавиши для выделения ячеек

Ниже приведен перечень комбинаций (помимо тех, что ранее уже были рассмотрены), пользуясь которыми можно производить выделение элементов в таблице:

  • Ctrl+Shift+End – выделение элементов с перемещением в самую первую ячейку листа;
  • Ctrl+Shift+Home – выделение элементов с перемещением до последней используемой ячейки;
  • Ctrl+End – выделение последней используемой ячейки;
  • Ctrl+Home – выделение первой ячейки с данными.

Ознакомиться с более расширенным список комбинаций клавиш вы можете в нашей статье – “Горячие клавиши в Эксель“.

Заключение

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

Источник

 

Доброго времени суток, господа.
Созрел у меня вопрос: как реализовать функцию «выделить все» (Ctrl+A) в макросе экселя?
Допустим есть таблицы, число строк у которых всегда разное. Если записать макрос использовав сочитание клавиш Ctrl+A, то в макросе будет записан диапазон ячеек. Например, если таблица имеет 3 столбика и 20 строк, то в макросе будет диапазон A1:C20. Все бы ничего, но при работе с другой таблицей, у которой 3 столбца и 50 строк, макрос будет работать не правильно (ибо диапазон, после A1:C20 не будет обрабатываться).
Как вариант, я поставил диапазон A1:C5000 (заведомо огромный, чтобы включить возможные размеры таблиц), но подозреваю, что есть более простой вариант реализации  :)  
Так как же «выделить все» макросом, не зная за ранее размеров таблицы?

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

Вычислить номер последней строки и номер последнего столбца. И уже потом выделять.

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

#3

08.01.2013 21:58:22

В общем случае это может выглядеть так:

Код
Sub qqq()
Dim LastRow As Long, LastColumn As Integer
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'последняя строка по столбцу А
    LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 'последний столбец по первой строке
    Range(Cells(1, 1), Cells(LastRow, LastColumn)).Select
End Sub
 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

поэкспериментиовал…
насколько я понял, Ctrl+A аналогично свойству CurrentRegion
за одним исключением — если в CurrentRegion окажется только одна ячейка (даже объединенная) — то тогда берется Worksheet.Cells
именно все Cells листа, а не UsedRange

имхо, Cells брать смысла нет, остается выбрать между CurrentRegion и UsedRange — смотря по задаче.

Изменено: ikki08.01.2013 22:07:47

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Андрей

Пользователь

Сообщений: 30
Регистрация: 08.01.2013

В строке макроса в место
Range(«A1:C20»).Select или Range(«A1:C5000»).Select
поставить
Cells.Select
(это Ctrl+A в макросе)
или как предлагает Юрий М

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

#6

08.01.2013 22:06:34

Цитата
Андрей пишет:
Cells.Select

Это Вы немного погорячились :)

 

Андрей, я так пытался сделать, но макрос после этого вместо 2х секунд начал выполняться 20 минут  :)

ikki, это хороший вариант. Загуглю позже, спасибо за посказку.

Юрий М, спасибо. Сейчас буду пробовать, позже отпишусь о результатах.

 

Вот что мне помогло —

http://www.youtube.com/watch?v=YXDJjTzB6EQ

В моем случае Ctrl+A работает как CurrentRegion.

Юрий М, я так и не осилил вашу часть кода (не шибко то я опытен в программировании vba), не могли бы вы описать в чем собственно заключается идея исспользования данного кода?

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

#9

09.01.2013 00:59:44

Цитата
Derian Fox пишет:
макрос после этого вместо 2х секунд начал выполняться 20 минут

Совет Cells.Select — плохой совет: будут выделены все ячейки на листе
Идея заключается в том, что Вы и хотели добиться :-) — определять последнюю строку и последний столбец (чтобы не выделять лишних ячеек).
===
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Эта строка кода найдёт последнюю заполненную ячейку в столбце А. Если нужно по другому столбцу — поменяйте 1 на номер нужного столбца.
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
Эта строка кода просмотрит ПЕРВУЮ строку на листе и определит последнюю заполненную ячейку: это и будет номер столбца.

Цитата
Derian Fox пишет:
Юрий М, я так и не осилил вашу часть кода

А что её осиливать? На чистом листе введите что-нибудь, например, в ячейки А10 и F1. Затем выполните тот маленький макрос. Будет выделен ТОЛЬКО диапазон, не выходящий за пределы ячеек с данными.

 

Derian Fox

Пользователь

Сообщений: 104
Регистрация: 08.01.2013

#10

10.01.2013 14:03:28

Юрий М, Потестил. Все шикарно работает, спасибо за обьяснение.

Я нашел аналогичное решение этого вопроса в C # Как выделить все ячейки на листе в объекте Excel.Range C #?

Как это сделать в VBA?

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

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

11 ответов

Лучший ответ

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


29

ExcelExpert
30 Июл 2013 в 23:17

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

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


25

chancea
30 Июл 2013 в 23:11

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

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


8

Faisal Mehmood
7 Окт 2017 в 07:31

Другой способ выбрать все ячейки в диапазоне, если данные являются смежными, — использовать Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select.


3

Bob the Builder
29 Мар 2019 в 22:38

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

Макрос 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

Community
23 Май 2017 в 15:00

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)


1

Yehia Amer
14 Мар 2017 в 23:57

Вот то, что я использовал, я знаю, что это можно улучшить, но я думаю, что это поможет другим …

''STYLING''

Dim sheet As Range

' Find Number of rows used
Dim Final As Variant
    Final = Range("A1").End(xlDown).Row

' Find Last Column
Dim lCol As Long
    lCol = Cells(1, Columns.Count).End(xlToLeft).Column

Set sheet = ActiveWorkbook.ActiveSheet.Range("A" & Final & "", Cells(1, lCol ))
With sheet
    .Interior.ColorIndex = 1
End With


1

FreeSoftwareServers
16 Мар 2019 в 07:29

Я обнаружил, что метод рабочего листа «.UsedRange» во многих случаях лучше подходит для решения этой проблемы. Я боролся с проблемой усечения, которая является нормальным поведением метода «.CurrentRegion». Использование [Worksheets («Sheet1»). Range («A1»). CurrentRegion] не дает желаемых результатов, когда рабочий лист состоит из одного столбца с пробелами в строках (а пробелы требуются). В этом случае «.CurrentRegion» будет усечен на первой записи. Я реализовал обходной путь, но недавно нашел еще лучший вариант; см. код ниже, который позволяет скопировать весь набор на другой лист или определить фактический адрес (или только строки и столбцы):

Sub mytest_GetAllUsedCells_in_Worksheet()
    Dim myRange

    Set myRange = Worksheets("Sheet1").UsedRange
    'Alternative code:  set myRange = activesheet.UsedRange

   'use msgbox or debug.print to show the address range and counts
   MsgBox myRange.Address      
   MsgBox myRange.Columns.Count
   MsgBox myRange.Rows.Count

  'Copy the Range of data to another sheet
  'Note: contains all the cells with that are non-empty
   myRange.Copy (Worksheets("Sheet2").Range("A1"))
   'Note:  transfers all cells starting at "A1" location.  
   '       You can transfer to another area of the 2nd sheet
   '       by using an alternate starting location like "C5".

End Sub


1

Lifygen
2 Май 2019 в 23:13

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

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


0

Sarah
31 Окт 2014 в 21:38

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

Sub find_last_row()
    Range("A76").Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub


0

Pavlin Todorov
7 Авг 2015 в 15:40

Вы можете использовать все ячейки как объект следующим образом:

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

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


16

user4791681
15 Апр 2015 в 14:47

Понравилась статья? Поделить с друзьями:
  • Как выделить весь курсив в тексте word
  • Как выглядит word 2010
  • Как выделить весь заполненный столбец в excel
  • Как выглядит word 2003
  • Как выглядит microsoft excel