Как выделить колонку в excel vba

 

Amberalex

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

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

Всем здравствуйте! Подскажите, как с помощью VBA можно выделить определенные столбцы по их номерам?  
Т.е., например а=2, b=5, как выделить столбцы с а по b, со второго по пятый?

 

Юрий М

Модератор

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

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

Включите макрорекордер и запишите выделение этих столбцов.

 

ran

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

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

 

Amberalex

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

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

Макрорекодер использует буквенные обозначения столбцов  
Columns(«B:F»).Select  
А мне нужно выделение столбцов и использованием числовых переменных, по их номеру.

 

Serge

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

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

{quote}{login=Amberalex}{date=26.09.2011 09:42}{thema=Выделение столбцов по номеру}{post}  
Т.е., например а=2, b=5, как выделить столбцы с а по b, со второго по пятый?{/post}{/quote}Извините, а между столбцами a и b какие идут?  
Я про третий и четвёртый…

 

Amberalex

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

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

RAN, большое спасибо, работает )  
Serge 007, не понял вопроса…

 

Serge

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

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

{quote}{login=Amberalex}{date=26.09.2011 09:52}{thema=}{post}  
Serge 007, не понял вопроса…{/post}{/quote}А что непонятного?  
У меня МЕЖДУ столбцами a и b других нет.  
a — первый, b — второй.  
У Вас не так?

 

Юрий М

Модератор

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

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

Ага, про номера не углядел :-) Но по указанной ссылке всё есть.  
Серж, a и b — переменные :-)

 

Serge

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

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

#9

26.09.2011 21:59:06

{quote}{login=Юрий М}{date=26.09.2011 09:57}{thema=}{post}  
Серж, a и b — переменные :-){/post}{/quote}Тогда понятно…  
А я всё по старинке, в экселе…  
Пора на свалку.

<#0>

AndreA SN

1014 / 118 / 2

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

Сообщений: 1,113

Записей в блоге: 2

1

05.04.2018, 14:29. Показов 15285. Ответов 2

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


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

Существует способ выделить строки

Visual Basic
1
    Rows("1:1").Select

хотелось бы таким же путем выделять столбцы. Что-то типа

Visual Basic
1
Columns(кол_начальное& ":" &кол_конечное).Select

где кол_начальное и кол_конечное — числа
как это реализовать?



0



Казанский

15136 / 6410 / 1730

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

Сообщений: 9,999

05.04.2018, 14:32

2

Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

AndreA SN,

Visual Basic
1
2
3
range(columns(1),columns(8)).select
 
columns(1).resize(,8).select



1



1014 / 118 / 2

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

Сообщений: 1,113

Записей в блоге: 2

05.04.2018, 14:33

 [ТС]

3

Спасибо, Алексей.



0



With these codes you can select different parts of a table.

Entire Table:
ActiveSheet.ListObjects("Table1").Range.Select

Table Header Row:
ActiveSheet.ListObjects("Table1").HeaderRowRange.Select

Table Data:
ActiveSheet.ListObjects("Table1").DataBodyRange.Select

Third Column:
ActiveSheet.ListObjects("Table1").ListColumns(3).Range.Select

Third Column (Data Only):
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Select

Select Row 4 of Table Data:
ActiveSheet.ListObjects("Table1").ListRows(4).Range.Select

Select 3rd Heading:
ActiveSheet.ListObjects("Table1").HeaderRowRange(3).Select

Select Data point in Row 3, Column 2:
ActiveSheet.ListObjects("Table1").DataBodyRange(3, 2).Select

Subtotals:
ActiveSheet.ListObjects("Table1").TotalsRowRange.Select

For a full guide on tables see The VBA Guide To ListObject Excel Tables.

I would like to select multiple columns.

Eg. I want to select column a, b, d, e, g, h

I’ve tried:

Columns("A, B, D, E, G, H").select

I get error message: Type mismatch.

Community's user avatar

asked Jan 17, 2012 at 0:49

HL8's user avatar

2

Range("A:B,D:E,G:H").Select can help

Edit note: I just saw you have used different column sequence, I have updated my answer

answered Jan 17, 2012 at 0:53

HRgiger's user avatar

HRgigerHRgiger

2,72026 silver badges37 bronze badges

2

Some things of top of my head.

Method 1.

Application.Union(Range("a1"), Range("b1"), Range("d1"), Range("e1"), Range("g1"), Range("h1")).EntireColumn.Select

Method 2.

Range("a1,b1,d1,e1,g1,h1").EntireColumn.Select

Method 3.

Application.Union(Columns("a"), Columns("b"), Columns("d"), Columns("e"), Columns("g"), Columns("h")).Select

answered Jan 17, 2012 at 1:03

GSerg's user avatar

GSergGSerg

75.3k17 gold badges160 silver badges340 bronze badges

1

Some of the code looks a bit complex to me. This is very simple code to select only the used rows in two discontiguous columns D and H. It presumes the columns are of unequal length and thus more flexible vs if the columns were of equal length.

As you most likely surmised 4=column D and 8=column H

Dim dlastRow As Long
Dim hlastRow As Long

dlastRow = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
hlastRow = ActiveSheet.Cells(Rows.Count, 8).End(xlUp).Row
Range("D2:D" & dlastRow & ",H2:H" & hlastRow).Select

Hope you find useful — DON’T FORGET THAT COMMA BEFORE THE SECOND COLUMN, AS I DID, OR IT WILL BOMB!!

Jose Ricardo Bustos M.'s user avatar

answered Dec 4, 2016 at 15:33

MORTON WAKELAND JR's user avatar

Working on a project I was stuck for some time on this concept — I ended up with a similar answer to Method 1 by @GSerg that worked great. Essentially I defined two formula ranges (using a few variables) and then used the Union concept. My example is from a larger project that I’m working on but hopefully the portion of code below can help some other people who might not know how to use the Union concept in conjunction with defined ranges and variables. I didn’t include the entire code because at this point it’s fairly long — if anyone wants more insight feel free to let me know.

First I declared all my variables as Public

Then I defined/set each variable

Lastly I set a new variable «SelectRanges» as the Union between the two other FormulaRanges

Public r As Long
Public c As Long
Public d As Long
Public FormulaRange3 As Range
Public FormulaRange4 As Range
Public SelectRanges As Range

With Sheet8




  c = pvt.DataBodyRange.Columns.Count + 1

  d = 3

  r = .Cells(.Rows.Count, 1).End(xlUp).Row

Set FormulaRange3 = .Range(.Cells(d, c + 2), .Cells(r - 1, c + 2))
    FormulaRange3.NumberFormat = "0"
    Set FormulaRange4 = .Range(.Cells(d, c + c + 2), .Cells(r - 1, c + c + 2))
    FormulaRange4.NumberFormat = "0"
    Set SelectRanges = Union(FormulaRange3, FormulaRange4)

answered Jan 7, 2016 at 3:18

Jonh's user avatar

JonhJonh

11113 bronze badges

As a recorded macro.

range("A:A, B:B, D:D, E:E, G:G, H:H").select

answered Mar 8, 2018 at 15:56

gavin's user avatar

gavingavin

3051 gold badge2 silver badges12 bronze badges

Содержание

  1. Выделение активной ячейки, строки или столбца
  2. Выделение активной ячейки
  3. Выделение всей строки и столбца, содержащих активную ячейку
  4. Выделение строки и столбца, содержащих активную ячейку, в текущей области
  5. Об участнике
  6. Поддержка и обратная связь
  7. Using the Excel Range Columns property in VBA
  8. Set Columns as Range
  9. N-th item in the collection
  10. Counting columns and cells
  11. Column in range and EntireColumn
  12. Select one or more columns in the columns collection using column character
  13. Loop over columns in Range
  14. Excel VBA — select multiple columns not in sequential order
  15. 5 Answers 5
  16. Linked
  17. Related
  18. Hot Network Questions
  19. Subscribe to RSS
  20. Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
  21. Выбор ячейки на активном листе
  22. Выбор ячейки на другом листе в той же книге
  23. Выбор ячейки на листе в другой книге
  24. Выбор диапазона ячеек на активном листе
  25. Выбор диапазона ячеек на другом листе в той же книге
  26. Выбор диапазона ячеек на листе в другой книге
  27. Выбор именованного диапазона на активном листе
  28. Выбор именованного диапазона на другом листе в той же книге
  29. Выбор именованного диапазона на листе в другой книге
  30. Выбор ячейки относительно активной ячейки
  31. Выбор ячейки относительно другой (не активной) ячейки
  32. Выбор смещения диапазона ячеек из указанного диапазона
  33. Выбор указанного диапазона и изменение его размера
  34. Выбор указанного диапазона, его смещение и изменение размера
  35. Выбор объединения двух или более указанных диапазонов
  36. Выбор пересечения двух или более указанных диапазонов
  37. Выбор последней ячейки столбца непрерывных данных
  38. Выбор пустой ячейки в нижней части столбца непрерывных данных
  39. Выбор целого диапазона смежных ячеек в столбце
  40. Как выбрать весь диапазон несмежных ячеек в столбце
  41. Выбор прямоугольного диапазона ячеек
  42. Выбор нескольких несмежных столбцов разной длины
  43. Примечания к примерам

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

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

Пример кода предоставил: Том Уртис, Atlas Programming Management

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

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить активную ячейку, присвоив свойству ColorIndex значение 8 (бирюзовый).

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

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить всю строку и столбец, содержащие активную ячейку, с помощью свойств EntireRow и EntireColumn.

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

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем в текущей области выделить строку и столбец, содержащие активную ячейку, используя свойство CurrentRegion объекта Range.

Об участнике

Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».

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

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

Источник

Using the Excel Range Columns property in VBA

The following sections explain how you can use worksheet or range object .Columns property. It begins with explaining several ways to select a column. At the end, I will explain how to loop over the columns collection.

Set Columns as Range

The .Columns property returns a range as a collection of columns, the selected range of columns. Which columns are included is determined by the RowIndex and ColumnIndex properties as explained below. There are three classes that support the Columns property:

  • Application.Columns : All columns on the active worksheet. This is what is assumed when Columns is called without specifying the range or worksheet.
  • Worksheets(«Sheet1»).Columns(«B:D») : columns B, C and D on the specified worksheet.
  • Range(«B2:D3»).Columns(2) : The second columns in the specified range, here C.

There are two ways to identify column(s) in the Columns collection:

  1. N-th item in the columns collection
  2. Select column in the columns collection using column character

Another ways to identify a column is using the range address, e.g. Range(«B:B») , or Range(«B:D») for columns B, C and D.

N-th item in the collection

When leaving out the second optional argument ColumnIndex , the Columns property returns the nth item. The order in which items get returned is breadth-first, so in the example table the columns with value a,b,c. f.

Expression Value Comment
Range(«B2:C3»).Columns(2) C The second column in the range
Range(«B2:C3»).Columns(3) D Even though the range only has two columns, .
Note
Negative values in the index are not allowed.

Counting columns and cells

Range(«B2:C3»).Columns.Count returns 2 columns, Range(«B2:C3»).Columns.Cells.Count returns 4 cells.

Column in range and EntireColumn

As shown in above example, Columns applied to a range only includes the cells in that range. To get the complete column, apply EntireColumn .

Select one or more columns in the columns collection using column character

Expression Column Comment
Range(«B2:B3»).Columns(«B») C Column character interpreted as number, e.g. «B» is always 2nd column, even if not in the original range
Range(«B2:B3»).Columns(«B:C») C and D Column character interpreted as number, e.g. «B» is always 2nd column

Loop over columns in Range

The Columns property is particularly useful because it makes it easy to iterate over a range. The image below shows the part of the Code VBA (download) menu that lets you insert the code fragment you require.

Источник

Excel VBA — select multiple columns not in sequential order

I would like to select multiple columns.

Eg. I want to select column a, b, d, e, g, h

I get error message: Type mismatch .

5 Answers 5

Range(«A:B,D:E,G:H»).Select can help

Edit note: I just saw you have used different column sequence, I have updated my answer

Some things of top of my head.

Method 1.

Method 2.

Method 3.

Some of the code looks a bit complex to me. This is very simple code to select only the used rows in two discontiguous columns D and H. It presumes the columns are of unequal length and thus more flexible vs if the columns were of equal length.

As you most likely surmised 4=column D and 8=column H

Hope you find useful — DON’T FORGET THAT COMMA BEFORE THE SECOND COLUMN, AS I DID, OR IT WILL BOMB!!

Working on a project I was stuck for some time on this concept — I ended up with a similar answer to Method 1 by @GSerg that worked great. Essentially I defined two formula ranges (using a few variables) and then used the Union concept. My example is from a larger project that I’m working on but hopefully the portion of code below can help some other people who might not know how to use the Union concept in conjunction with defined ranges and variables. I didn’t include the entire code because at this point it’s fairly long — if anyone wants more insight feel free to let me know.

First I declared all my variables as Public

Then I defined/set each variable

Lastly I set a new variable «SelectRanges» as the Union between the two other FormulaRanges

As a recorded macro.

Linked

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.17.43323

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Выбор ячеек и диапазонов с помощью процедур 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) можно также использовать переменную, значение которой является текстовой строкой. Например, вместо

Источник

Понравилась статья? Поделить с друзьями:
  • Как выделить код в word
  • Как выделить клетку в excel для формулы
  • Как выделить клетки в excel
  • Как выделить клавишами всю таблицу в excel
  • Как выделить картинку word vba