Vba excel selection count

Return to VBA Code Examples

If you ever need to count the number of rows that were selected, use Selection.Rows.Count

Count Rows in a Selection

Public Sub CountMyRows()

MsgBox Selection.Rows.Count

End Sub

If you ever need to count the number of Columns that were selected, use Selection.Columns.Count

Count Columns in a Selection

Public Sub CountMyColumns()

MsgBox Selection.Columns.Count

End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

alt text

Learn More!

<<Return to VBA Examples

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

I’m looking to work out how many rows a user has selected to be displayed at the top of the sheet next to an action button, I.e. Button says «Generate Email» and next to it says «x items selected».

As this is updated everytime the selection is changed, I have the following code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Sheet1.Range("E1") = Target.Rows.Count & " items selected"
End Sub

This works fine if the user selects consecutive rows, for e.g. 7:10 returns 4.

My problem is if a user selected rows 7, and 10. It would only return 1 (the rows in the first part of the selection).

From what I’ve found, there is no way of just getting this value from a property, but I can’t get my head around how to iterate through all parts of the selection/target and calculate the sum of rows. Then there is also the possibility that the user selects say A7, C7, and A10. A7 and C7 relate to the same item, so this should only really be treated as one, not two, which I think my hypothetical code would do…

Has anyone tried to achieve this before and been successful or could point me in the direction of some properties which may help? I tried a separate function to achieve it, but that wasn’t working either.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Sheet1.Range("E1") = getRowCount(Target) & " items selected"
End Sub

Function getRowCount(selectedRanges As Ranges)
  rowCount = 0
  For Each subRange In selectedRanges
    rowCount = rowCount + subRange.Rows.Count
  Next

  getRowCount = rowCount
End Function

Содержание

  1. Свойство Range.Rows (Excel)
  2. Синтаксис
  3. Замечания
  4. Пример
  5. Поддержка и обратная связь
  6. VBA – Count the rows in a Selection
  7. Count Rows in a Selection
  8. Count Columns in a Selection
  9. VBA Coding Made Easy
  10. VBA Code Examples Add-in
  11. VBA Code Generator
  12. AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!
  13. What is AutoMacro?
  14. Selection.Count overflow when selecting all cells
  15. 4 Answers 4
  16. VBA Selection Count
  17. slinkyjib
  18. Excel Facts
  19. ADAMC
  20. Similar threads
  21. Forum statistics
  22. Share this page
  23. We’ve detected that you are using an adblocker.
  24. Which adblocker are you using?
  25. Disable AdBlock
  26. Disable AdBlock Plus
  27. Disable uBlock Origin
  28. Disable uBlock
  29. Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
  30. Выбор ячейки на активном листе
  31. Выбор ячейки на другом листе в той же книге
  32. Выбор ячейки на листе в другой книге
  33. Выбор диапазона ячеек на активном листе
  34. Выбор диапазона ячеек на другом листе в той же книге
  35. Выбор диапазона ячеек на листе в другой книге
  36. Выбор именованного диапазона на активном листе
  37. Выбор именованного диапазона на другом листе в той же книге
  38. Выбор именованного диапазона на листе в другой книге
  39. Выбор ячейки относительно активной ячейки
  40. Выбор ячейки относительно другой (не активной) ячейки
  41. Выбор смещения диапазона ячеек из указанного диапазона
  42. Выбор указанного диапазона и изменение его размера
  43. Выбор указанного диапазона, его смещение и изменение размера
  44. Выбор объединения двух или более указанных диапазонов
  45. Выбор пересечения двух или более указанных диапазонов
  46. Выбор последней ячейки столбца непрерывных данных
  47. Выбор пустой ячейки в нижней части столбца непрерывных данных
  48. Выбор целого диапазона смежных ячеек в столбце
  49. Как выбрать весь диапазон несмежных ячеек в столбце
  50. Выбор прямоугольного диапазона ячеек
  51. Выбор нескольких несмежных столбцов разной длины
  52. Примечания к примерам

Свойство Range.Rows (Excel)

Возвращает объект Range , представляющий строки в указанном диапазоне.

Синтаксис

expression. Строк

выражение: переменная, представляющая объект Range.

Замечания

Чтобы вернуть одну строку, используйте свойство Item или аналогично включите индекс в круглые скобки. Например, и Selection.Rows(1) Selection.Rows.Item(1) возвращают первую строку выделенного фрагмента.

При применении к объекту Range , который является множественным выделением, это свойство возвращает строки только из первой области диапазона. Например, если объект someRange Range имеет две области — A1:B2 и C3:D4, someRange.Rows.Count возвращает значение 2, а не 4. Чтобы использовать это свойство в диапазоне, который может содержать несколько выделенных элементов, проверьте Areas.Count , чтобы определить, является ли диапазон множественным выбором. Если это так, выполните цикл по каждой области диапазона, как показано в третьем примере.

Возвращаемый диапазон может находиться за пределами указанного диапазона. Например, Range(«A1:B2»).Rows(5) возвращает ячейки A5:B5. Дополнительные сведения см. в разделе Свойство Item .

Использование свойства Rows без квалификатора объекта эквивалентно использованию ActiveSheet.Rows. Дополнительные сведения см. в свойстве Worksheet.Rows .

Пример

В этом примере удаляется диапазон B5:Z5 на листе 1 активной книги.

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

В этом примере отображается количество строк в выделенном фрагменте на листе Sheet1. Если выбрано несколько областей, в примере выполняется цикл по каждой области.

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA – Count the rows in a Selection

In this Article

If you ever need to count the number of rows that were selected, use Selection.Rows.Count

Count Rows in a Selection

If you ever need to count the number of Columns that were selected, use Selection.Columns.Count

Count Columns in a Selection

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

VBA Code Generator

AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!

What is AutoMacro?

AutoMacro is an add-in for VBA that installs directly into the Visual Basic Editor. It comes loaded with code generators, an extensive code library, the ability to create your own code library, and many other time-saving tools and utilities that add much needed functionality to the outdated VBA Editor.

Источник

Selection.Count overflow when selecting all cells

In Excel 2007 I want to prompt a message when a cell (L2) is clicked on. I have a piece of code that works but the problem is that when I select all the cells in the sheet with Ctrl+A I get error number 06: overflow on the line If Selection.Count = 1 Then

Mandatory VBA code:

4 Answers 4

You must change your code as follows. No Error-Traps needed: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Area.Count = 1 Then If Not Intersect(Target, Range(«L2»)) Is Nothing Then MsgBox «ACTION!» End If End If End Sub

If you had 64-bit Excel I would tell you to use CountLarge instead of Count . Excel 2007 only comes in the 32-bit variety so that’s not an option for you.

Your problem is that Range.Count returns a Long variable and throws an error if the number of cells is greater than a Long can store.

To get around this, you can do the following:

Use a Decimal data type stored inside a Variant . The combination can count more than the 1,048,576 rows x 16,384 columns of cells in an Excel worksheet.

Count the cells one column at a time to avoid the error with Range.Count .

I wrote a function that does that. Save this function in a regular code module (not a Worksheet or Workbook module) and use it like this:

Источник

VBA Selection Count

slinkyjib

Board Regular

Good morning all,

I’m trying to count the number of rows in a selection

Am I missing something from this?

Later in the code I do this..

Excel Facts

ADAMC

Well-known Member

Can you explain a little more? Are you saying your code doesnt work?

One way to count rows in a selection

Similar threads

Forum statistics

We’ve detected that you are using an adblocker.

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the «Pause on this site» option.

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for «mrexcel.com».

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the «Power» button.
3)Click on the «Refresh» button.

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the «Power» button.
3)Click on the «Refresh» button.

Источник

Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена. В примерах в этой статье используются методы Visual Basic, перечисленные в следующей таблице.

В примерах в этой статье используются свойства, приведенные в следующей таблице.

Выбор ячейки на активном листе

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

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

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

Кроме того, можно активировать лист, а затем выбрать ячейку с помощью метода 1, приведенного выше:

Выбор ячейки на листе в другой книге

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

Кроме того, можно активировать лист, а затем выбрать ячейку с помощью метода 1, приведенного выше:

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

Чтобы выбрать диапазон C2:D10 на активном листе, можно использовать любой из следующих примеров:

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

Чтобы выбрать диапазон D3:E11 на другом листе в той же книге, можно использовать один из следующих примеров:

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

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

Чтобы выбрать диапазон E4:F12 на листе в другой книге, можно использовать один из следующих примеров:

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

Выбор именованного диапазона на активном листе

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

Выбор именованного диапазона на другом листе в той же книге

Чтобы выбрать именованный диапазон «Тест» на другом листе в той же книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор именованного диапазона на листе в другой книге

Чтобы выбрать именованный диапазон «Тест» на листе в другой книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор ячейки относительно активной ячейки

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

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

При попытке выбрать ячейку, которая находится вне листа, произойдет ошибка. Первый пример, показанный выше, вернет ошибку, если активная ячейка находится в столбцах A–D, так как перемещение четырех столбцов влево приведет к переходу активной ячейки на недопустимый адрес ячейки.

Выбор ячейки относительно другой (не активной) ячейки

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

Выбор смещения диапазона ячеек из указанного диапазона

Чтобы выбрать диапазон ячеек того же размера, что и именованный диапазон «Тест», но сдвинув четыре строки вниз и три столбца вправо, можно использовать следующий пример:

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

Выбор указанного диапазона и изменение его размера

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

Выбор указанного диапазона, его смещение и изменение размера

Чтобы выбрать диапазон из четырех строк ниже и трех столбцов справа от именованного диапазона «База данных» и включить две строки и один столбец больше именованного диапазона, можно использовать следующий пример:

Выбор объединения двух или более указанных диапазонов

Чтобы выбрать объединение (то есть объединенную область) двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Значение , чтобы оба диапазона были на одном листе для работы в этом примере. Обратите внимание, что метод Union не работает на разных листах. Например, эта строка работает нормально.

возвращает сообщение об ошибке:

Сбой метода Union класса приложения

Выбор пересечения двух или более указанных диапазонов

Чтобы выбрать пересечение двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Обратите внимание, что для работы в этом примере оба диапазона должны находиться на одном листе.

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

Выбор последней ячейки столбца непрерывных данных

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

При использовании этого кода с образцом таблицы будет выбрана ячейка A4.

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

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

При использовании этого кода с образцом таблицы будет выбрана ячейка A5.

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

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

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A4.

Как выбрать весь диапазон несмежных ячеек в столбце

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

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A6.

Выбор прямоугольного диапазона ячеек

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

Этот код будет выбирать ячейки A1–C4. Ниже перечислены другие примеры выбора того же диапазона ячеек.

В некоторых случаях может потребоваться выбрать ячейки A1–C6. В этом примере метод CurrentRegion не будет работать из-за пустой строки в строке 5. В следующих примерах будут выделены все ячейки:

Выбор нескольких несмежных столбцов разной длины

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

При использовании этого кода с образцом таблицы будут выбраны ячейки A1:A3 и C1:C6.

Примечания к примерам

Свойство ActiveSheet обычно можно опустить, так как оно подразумевается, если конкретный лист не называется. Например, вместо

вы можете использовать:

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

При использовании метода Application.Goto, если вы хотите использовать два метода Cells в методе Range, если указанный диапазон находится на другом (не активном) листе, необходимо каждый раз включать объект Sheets. Например:

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

Источник

There are times when you might want to find out the total number of rows or columns that were selected in your Excel spreadsheet using Excel VBA.

The easiest way to do this is to use the Selection.Rows and Selection.Columns object and use the Count property to get the count.

How to Count Rows in Selection using Excel VBA?

When you wanted to get the total rows that have been selected, you can use Selection.Rows as shown below.

Public Sub GetSelectedRows()

	MsgBox Selection.Rows.Count

End Sub

How to Count Columns in Selection using Excel VBA?

If you need to count the number of columns that are selected, you can use Selection.Columns.Count as shown below.

Public Sub GetSelectedColumns()

MsgBox Selection.Columns.Count

End Sub
How to Count the Rows & Columns in Selection using Excel VBA?

 

N1K0

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

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

Выделены несколько ячеек, нужно определить их количество. в VBA.  
в совсем было бы круто узнать размеры выделенного диапазона (длина и ширина)

 

N1K0

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

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

{quote}{login=The_Prist}{date=16.09.2009 09:49}{thema=}{post}Dim lCellsCount as Long  
lCellsCount = Selection.Count  

  А вот длина и ширина — это действительно круто! В каких единицах хотите измерить и для чего?{/post}{/quote}  
Спасибо за Count, все время забываю назначение команд.  

  А измерять в «Ячейках» больше вроде не в чем.    
На пример (A1:D5)-могут быть и другие значения  
ответ 4 на 5

 

N1K0

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

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

Ситуация такая  
Я использую автофильтр  
   Selection.AutoFilter Field:=32, Criteria1:=»не сопоставлен», Operator:=xlAnd  
отображаются только не сопоставленные значения    

     копирую данные в другой лист без активации листа  
    Range(«AD5:AD198»).Copy  
    Sheets(«Лист1»).Range(«А1»).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
т.е. на Листе1 несколько не сопоставленных Значений  
как узнать их количество

 

Юрий М

Модератор

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

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

Sub Test()  
Dim lCellsCount As Long  
Dim Rng As Range  
MsgBox «Ячеек: » & lCellsCount & Selection.Count & Chr(10) _  
& «Строк: » & Selection.Rows.Count & Chr(10) & «Столбцов: » & Selection.Columns.Count  
End Sub

 

Юрий М

Модератор

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

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

Лишнего написал. Вот так нужно:  
Sub Test()  
MsgBox «Ячеек: » & Selection.Count & Chr(10) _  
& «Строк: » & Selection.Rows.Count & Chr(10) & «Столбцов: » & Selection.Columns.Count  
End Sub

 

N1K0

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

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

Спасибо Юрий М . Вон оно как просто!

 

N1K0

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

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

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

 

Выложите свой код, мы поправим его

 

N1K0

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

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

Selection.AutoFilter Field:=32, Criteria1:=»не сопоставлен», Operator:=xlAnd  
‘ Копирует Наименование  
    Sheets(«Приходование»).Range(«G5:G198»).Copy  
    Sheets(«Лист1»).Select ‘ Мигнул  
    Range(«A1»).Select  
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
    Dim КолЯч As Integer  
    КолЯч = Selection.Count  
    Sheets(«Приходование»).Select ‘ Опять мигнул  

  ‘ Код поставщика  
    Sheets(«Приходование»).Range(«H2»).Copy  
    Sheets(«Лист1»).Range(«D1:D» & КолЯч).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 

Юрий М

Модератор

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

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

Попробуйте так:  
Sub Test()  
With Sheets(«Лист1»)  
Range(«AD5:AD198»).Copy  
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues  
End With  
End Sub

 

Юрий М

Модератор

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

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

А если хотите с активацией листа, то используйте    
Application.ScreenUpdating = False  
а в самом конце кода:  
Application.ScreenUpdating = True

 

N1K0

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

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

{quote}{login=Юрий М}{date=16.09.2009 11:25}{thema=}{post}Попробуйте так:  
Sub Test()  
With Sheets(«Лист1»)  
Range(«AD5:AD198»).Copy  
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues  
End With  
End Sub{/post}{/quote}  

  нето.    
там где копирует Наименование еще и подсчитывает количество вставленных ячеек (оно всякий раз разное)  
                 КолЯч = Selection.Count  
и на основании КолЯч «код поставщика» распространяется на Range(«D1:D» & КолЯч).PasteSpecial Paste:=xlPasteValues

 

Посмотрите чуть выше, вам Юрий написал про Application.ScreenUpdating = False

 

N1K0

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

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

#14

17.09.2009 00:39:37

{quote}{login=}{date=16.09.2009 11:56}{thema=}{post}Посмотрите чуть выше, вам Юрий написал про Application.ScreenUpdating = False{/post}{/quote}  
в принципе это помогает. Спасибо

<#0>

majestik27

0 / 0 / 1

Регистрация: 04.04.2013

Сообщений: 5

1

Количество выделенных ячеек

04.04.2013, 06:05. Показов 11114. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

Visual Basic
1
2
3
For i = 1 To Selection.Count 
Лист1.Cells(4, 3) = Selection.Count 
Next



0



Скрипт

5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

04.04.2013, 07:58

2

Visual Basic
1
2
3
4
5
Sub Procedure_2()
 
    Selection.Cells(1).Value = Selection.Cells.Count
 
End Sub



2



0 / 0 / 1

Регистрация: 04.04.2013

Сообщений: 5

04.04.2013, 09:05

 [ТС]

3

спасибо



0



Скрипт

5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

04.04.2013, 09:24

4

majestik27, в «Excel» есть нюансы при работе с выделением:
нужно принимать во внимание: использует пользователь для выделения клавишу «Ctrl» или нет. Если использует, то количество выделенных ячеек может не совпадать с тем, что даёт команда:

Visual Basic
1
Selection.Cells.Count

Поэтому, если нужно учитывать клавишу «Ctrl», то нужно внести изменения в код.

Пример, когда будет получен неверный результат:

  1. выделите ячейку «A1»;
  2. удерживая клавишу «Ctrl», выделите ячейку «B1»;
  3. удерживая клавишу «Ctrl», выделите ячейку «A1»;
  4. будет выделено 2 ячейки, но команда «Selection.Cells.Count» даст число «3».



1



0 / 0 / 1

Регистрация: 04.04.2013

Сообщений: 5

04.04.2013, 09:26

 [ТС]

5

Понятно. Ваш предложенный код работает, потому ,что выделение идет одинаковых ячеек, подряд идущих.



0



We’ve detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.

Allow Ads at MrExcel

Which adblocker are you using?

AdBlock AdBlock Plus uBlock Origin uBlock

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the «Pause on this site» option.

Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for «mrexcel.com».

Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the «Power» button.
3)Click on the «Refresh» button.

Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the «Power» button.
3)Click on the «Refresh» button.

Go back

Continue without ads

I’ve disabled my adblock

Содержание

  • 1 Code does / does not use With-End With
  • 2 Counts columns in a multiple selection
  • 3 Determining the type of selected range
  • 4 Find next heading
  • 5 Get selection address
  • 6 Get the address of selection
  • 7 Is the current selection a Range
  • 8 Returns a count of all cells in a selection: using the Selection and Count properties
  • 9 Returns a count of the number of columns in a selection
  • 10 Returns a count of the number of rows in a selection
  • 11 Selection move down
  • 12 To add a range name based on a selection
  • 13 Toggling a Boolean property

Code does / does not use With-End With

   <source lang="vb">

Sub selectionDemo()

   Selection.HorizontalAlignment = xlCenter
   Selection.VerticalAlignment = xlCenter
   Selection.WrapText = True
   Selection.Orientation = 0
   Selection.ShrinkToFit = False
   Selection.MergeCells = False
   
   With Selection
       .HorizontalAlignment = xlCenter
       .VerticalAlignment = xlCenter
       .WrapText = True
       .Orientation = 0
       .ShrinkToFit = False
       .MergeCells = False
   End With

End Sub

</source>
   
  

Counts columns in a multiple selection

   <source lang="vb">

Sub CountColumnsMultipleSelections()

   AreaCount = Selection.Areas.Count
   If AreaCount <= 1 Then
       MsgBox "The selection contains " & Selection.Columns.Count & " columns."
   Else
       For i = 1 To AreaCount
           MsgBox "Area " & i & " of the selection contains " & Selection.Areas(i).Columns.Count & " columns."
       Next i
   End If

End Sub

</source>
   
  

Determining the type of selected range

   <source lang="vb">

Sub Main()

  Debug.Print AreaType(Selection)

End Sub
Function AreaType(RangeArea As range) As String
» Returns the type of a range in an area

   Select Case True
       Case RangeArea.Count = 1
           AreaType = "Cell"
       Case RangeArea.Count = Cells.Count
           AreaType = "Worksheet"
       Case RangeArea.Rows.Count = Cells.Rows.Count
           AreaType = "Column"
       Case RangeArea.Columns.Count = Cells.Columns.Count
           AreaType = "Row"
       Case Else
           AreaType = "Block"
   End Select

End Function

</source>
   
  

Find next heading

   <source lang="vb">

Sub FindNextHeading()
    Do Until Left(Selection.Paragraphs(1).Style, 7) = "Heading"
        Selection.MoveDown Unit:=wdParagraph, _
            Count:=1, Extend:=wdMove
    Loop
End Sub
</source>
   
  

Get selection address

   <source lang="vb">

Sub GetSelectionAddress()

   ActiveSheet.Names.Add Name:="MyRange2", RefersTo:="=" & Selection.Address()

End Sub

</source>
   
  

Get the address of selection

   <source lang="vb">

Sub getSelectionAddress

  Selection.Address

End Sub

</source>
   
  

Is the current selection a Range

   <source lang="vb">

Sub EnterAvg()

   If TypeName(Selection) <> "Range" Then Exit Sub

End Sub

</source>
   
  

Returns a count of all cells in a selection: using the Selection and Count properties

   <source lang="vb">

Sub CountAllCells()

   Dim myCount As Integer                    
   myCount = Selection.Count
   MsgBox "The total number of cell(s) in this selection is : " _
        & myCount, vbInformation, "Count Cells"

End Sub

</source>
   
  

Returns a count of the number of columns in a selection

   <source lang="vb">

Sub CountColumns()

   Dim myCount As Integer                     
   myCount = Selection.Columns.Count
   MsgBox "This selection contains " & myCount & " columns", vbInformation, "Count Columns"

End Sub

</source>
   
  

Returns a count of the number of rows in a selection

   <source lang="vb">

Sub CountRows()

   Dim myCount As Integer
   myCount = Selection.Rows.Count
   MsgBox "This selection contains " & myCount & " row(s)", vbInformation, "Count Rows"

End Sub

</source>
   
  

Selection move down

   <source lang="vb">

Sub loopDemo()

   Dim i As Integer
   For i = 1 To ActiveDocument.Paragraphs.Count
       Application.StatusBar = "formatting" & i & " out of " & ActiveDocument.Paragraphs.Count & "..."
       Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdMove
   Next i

End Sub

</source>
   
  

To add a range name based on a selection

   <source lang="vb">

Sub AddName4()

   Selection.Name = "MyRange4"

End Sub

</source>
   
  

Toggling a Boolean property

   <source lang="vb">

Sub ToggleWrapText()

   If TypeName(Selection) = "Range" Then 
     Selection.WrapText = Not ActiveCell.WrapText
   End If

End Sub

</source>

Like this post? Please share to your friends:
  • Vba excel select или activate
  • Vba excel select item in listbox
  • Vba excel select from access
  • Vba excel select cell value
  • Vba excel select case пример