Vba excel выбрать несколько столбцов

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

 

Мартын

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

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

#1

22.12.2016 11:32:51

Здравствуйте, все!
Вопрос такой: есть на листе таблица «Table1», в VBA ей соответствует ListObjects(«Table1»).
В таблице есть несколько столбцов с именами «a», «b», «c».
Мне надо выбрать (для копирования) области данных нескольких смежных столбцов одновременно. Как это сделать???
Данные (без заголовка!) одного столбца выбираются элементарно:

Код
Dim r As Range
Set r=ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1").ListColumns.Item("b").DataBodyRange
r.Copy

и т.д…..
А вот как выбрать данные сразу двух/трёх/ и т.д. столбцов этой «умной таблицы»???

 

Пытливый

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

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

#2

22.12.2016 11:37:37

Сделал на листочке простую «умную» таблицу с заголовками «Один», «Два», «Три»
Забил 3-4 строк данных
Включил макрорекордер
Выделил столбец «ОДИН», «ДВА»
Получил код:

Код
 Range("Таблица1[[#All],[Один]:[Два]]").Select

Может через это как-то попробовать?

Кому решение нужно — тот пример и рисует.

 

Sanja

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

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

#3

22.12.2016 13:10:29

Ничего лучшего не придумал  :(. Union

Код
Dim r As Range
With Worksheets("Лист1").ListObjects("Таблица1")
    Set r = Union(.ListColumns("b").DataBodyRange, .ListColumns("c").DataBodyRange)
End With
r.Copy

Изменено: Sanja22.12.2016 13:10:48

Согласие есть продукт при полном непротивлении сторон.

 

Мартын

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

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

#4

22.12.2016 14:00:21

Цитата
Sanja написал: Union

Может быть и прокатит, но хочется верить, что создатели  VBA догадывались, что кому-нибудь может потребоваться выбрать более одного столбца и предусмотрели некий простой и удобный вариант. Только забыли его задокументировать. :(

 

Dima S

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

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

#5

22.12.2016 22:19:52

Цитата
Range(«Таблица1[[#All],[Один]:[Два]]»).Select

чем не

Цитата
простой и удобный вариант

Изменено: Dima S22.12.2016 22:20:25

 

Sanja

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

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

#7

22.12.2016 23:25:35

Цитата
Мартын написал: области данных нескольких смежных столбцов одновременно
Код
Set r = Worksheets("Лист1").ListObjects("Таблица1").DataBodyRange.Columns("b:c")

Согласие есть продукт при полном непротивлении сторон.

 

Мартын

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

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

Sanja, огромное спасибо!!! Я верил, что простой способ есть!

 

Sanja

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

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

:D Просто попробовал расставить свойства объекта ListObjects(«Таблица1») в той последовательности, которая требовалась

Согласие есть продукт при полном непротивлении сторон.

 

RAN

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

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

#10

23.12.2016 18:45:57

Цитата
Мартын написал:
Я верил, что простой способ есть!

Но не этот  :)

Код
Set r = Worksheets("Лист1").ListObjects("Таблица1").ListColumns("b").DataBodyRange

и

Код
Set r = Worksheets("Лист1").ListObjects("Таблица1").DataBodyRange.Columns("b")

дадут два совершенно различных диапазона (если только случайно второй столбец таблицы не имеет имя «b»)

Код
Sub qq()
    With Worksheets("Лист1").ListObjects("Таблица1")
        Set r = .DataBodyRange.Offset(, .ListColumns("b").Index - 1) _
                .Resize(, .ListColumns("d").Index - .ListColumns("b").Index + 1)
    End With
    r.Select
End Sub
 

Sanja

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

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

#11

24.12.2016 08:39:50

RAN, точно, промашка вышла. Названия столбцов действительно совпадали с их заголовками (#7)
Не понял для чего .Offset

Код
Sub ListO()
Dim r As Range
With Worksheets("Лист1").ListObjects("Таблица1")
'   Если известна величина смещения
'    Set r = .ListColumns("Clm2").DataBodyRange.Resize(, 3)
'   По названию столбца
    Set r = .ListColumns("Clm2").DataBodyRange. _
        Resize(, .ListColumns("Clm4").Index - .ListColumns("Clm2").Index + 1)
End With
    r.Select
'    r.Copy
End Sub

Прикрепленные файлы

  • Выбор смежных столбцов в умной таблице.xlsm (14.96 КБ)

Изменено: Sanja24.12.2016 09:43:00

Согласие есть продукт при полном непротивлении сторон.

 

RAN

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

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

#12

24.12.2016 10:12:00

Цитата
Sanja написал: Не понял для чего .Offset

Перемудрил

 

ZVI

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

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

#13

25.12.2016 01:02:08

Для

примера

таблицы Андрея из сообщения

#11

Код
' Выделить смежные столбцы DataBodyRange со 2-го по 4-й
Sub Столбцы234()
  Range("Таблица1[[Clm2]:[Clm4]]").Select
  ' или так:
  'Range("Таблица1[Clm2]").Resize(,3).Select
End Sub

' Выделить несмежные столбцы DataBodyRange 2-й и 4-й
Sub Столбцы24()
  Range("Таблица1[Clm2],Таблица1[Clm4]").Select
End Sub

Изменено: ZVI25.12.2016 04:48:28

 

Мартын

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

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

Нашел простой ИМХО способ:
Dim r As Range
With ThisWorkbook.Worksheets(«Sheet1»).ListObjects(«Table1»)
Set r = Range(.ListColumns(«clm2»).DataBodyRange, .ListColumns(«clm4»).DataBodyRange)
r.copy
end with

 

tchack

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

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

#15

19.12.2022 17:47:26

Цитата
Пытливый написал:
Сделал на листочке простую «умную» таблицу с заголовками «Один», «Два», «Три»Забил 3-4 строк данныхВключил макрорекордерВыделил столбец «ОДИН», «ДВА»Получил код:Код ? 1Range(«Таблица1[[#All],[Один]:[Два]]»).SelectМожет через это как-то попробовать?

А как таким образом выделить столбец «Один», «Пять», «Восемь»??

 

нажмите Ctrl

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

tchack

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

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

#17

19.12.2022 18:11:41

Цитата
Ігор Гончаренко написал:
нажмите Ctrl

Таким способом:

Код
Range("Таблица1[[#All],[Один]:[Два]]").Select

При выборе несмежных столбцов макрорекордер пишет обычный диапазон (не диапазон умной таблицы).

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#18

19.12.2022 18:19:39

Цитата
написал:
При выборе несмежных столбцов

выше же дали способ — чем не подходит? Сообщение

#13

от 25.12.2016 01:02:08

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

tchack

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

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

#19

19.12.2022 19:09:34

Цитата
Дмитрий(The_Prist) Щербаков написал:
выше же дали способ — чем не подходит?

Столбцы «Один» и «Два» смежные:

Код
Range("Таблица1[[#All],[Один]:[Два]]").Select

Столбцы «Один», «Пять», «Восемь» — несмежные, а перечисление через запятую выдает ошибку:

Код
Range("Таблица1[[#All],[Один],[Пять],[Восемь]]").Select
 

sokol92

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

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

#20

19.12.2022 20:32:32

Найдите разницу между #13:

Код
Range("Таблица1[Clm2],Таблица1[Clm4]")

и #19:

Код
Range("Таблица1[[#All],[Один],[Пять],[Восемь]]")

Владимир

 

tchack

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

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

sokol92, благодарю. Не обратил внимание.

 

tchack

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

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

#22

19.12.2022 22:05:33

Возможно ли соединить два таких диапазона в одном объекте Range:

Код
Sheet1.Range( _
"Таблица1[ОДИН]," + _
"Таблица1[ПЯТЬ]," + _
"Таблица1[ВОСЕМЬ]").Select
Код
Sheet1.Range("Таблица1").Columns(10).Select

Изменено: tchack19.12.2022 22:05:56

 

New

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

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

#23

19.12.2022 23:40:48

Код
Sub Test()
    Dim Sheet1 As Worksheet
    
    Set Sheet1 = ActiveSheet
    
    Sheet1.Range("Таблица1[Column2]").Select
    Sheet1.Range("Таблица1[Column1],Таблица1[Column5],Таблица1[Column8]").Select
    Sheet1.Range("Таблица1").Columns(10).Select
    
    Dim Rng1 As Range
    Dim Rng2 As Range
    Dim Rng3 As Range
    
    Set Rng1 = Sheet1.Range("Таблица1[Column1],Таблица1[Column5],Таблица1[Column8]")
    Set Rng2 = Sheet1.Range("Таблица1").Columns(10)
    
    Set Rng3 = Union(Rng1, Rng2)
    Rng3.Select
    
End Sub
 

tchack

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

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

#24

19.12.2022 23:55:35

New, спасибо, так лучше:

Код
    Application.Union(Sheet1.Range( _
       "Таблица1[ОДИН]," + _
       "Таблица1[ПЯТЬ]," + _
       "Таблица1[ВОСЕМЬ]" _
    ), Sheet1.Range("Таблица1").Columns(10)).Select

но я ищу вариант без Union (если это возможно).

Изменено: tchack19.12.2022 23:56:01

 

New

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

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

если честно, вы ищите костыли )

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#26

20.12.2022 08:29:43

Цитата
написал:
я ищу вариант без Union

Вы бы еще написали зачем эти грабли вообще Вам нужны — может чего и придумалось бы. А пока выглядит как желание капризного ребенка — хочу и все :)
Без обид, но никто не понимает почему нельзя Union и почему не подходят другие предложенные варианты.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

tchack

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

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

Дмитрий(The_Prist) Щербаков, во всех сообщениях спрашивается о возможности, а не о «желании капризного ребенка».

Логичный ответ был бы или «такая возможность отсутствует», или «такая возможность есть…..».

PS: Если бы покупая внедорожник, Вы бы поинтересовались о возможности проехать на нем через лес, а в ответ бы Вам сказали, что можно проехать по шоссе, а Ваш вопрос это желание капризного ребенка, то чтобы Вы ответили?

Изменено: tchack20.12.2022 10:43:23

 

Дмитрий(The_Prist) Щербаков

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

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

Профессиональная разработка приложений для MS Office

#28

20.12.2022 11:04:25

Цитата
tchack написал:
Если бы покупая внедорожник, Вы бы поинтересовались о возможности проехать на нем через лес, а в ответ бы Вам сказали, что можно проехать по шоссе, а Ваш вопрос это желание капризного ребенка, то чтобы Вы ответили?

я бы ответил, что Вы сейчас фигню полную написали и с аллегориями у Вас явно проблемы. Вы не подумали о том, что лес лесу рознь? Если в лесу нет дорог — одни деревья и нет даже тропинки — какой нафиг внедорожник? Покупайте танк. А если надо через лес конкретный проехать и мне в салоне вместо дороги через лес показали нормальную дорогу — да я только спасибо им скажу, что не отправили напролом в лес.
Ну а тропинки через лес Вам показали хоть на внедорожнике, хоть на велосипеде, но Вы ищите какие-то другие. При этом чем не нравятся те, что показали — не ясно, кром того, что «ну не нравится так». Поэтому пример Ваш весьма некорректен. К тому же Вы тут не на рынке и не в салоне, чтобы с Вами кто-то любезничал и вокруг бегал, накидывая варианты просто потому, что Вам так хочется. Поясните что не так с предложенными вариантам и чем не подходят — тогда будет разговор и можно будет думать, как что-то обойти или сделать иначе.

Цитата
tchack написал:
Логичный ответ был бы или «такая возможность отсутствует», или «такая возможность есть…..».

Вам привели несколько вариантов — ни один не подошел. Логично на Вашем месте было бы пояснить почему не подходит. Но Вы не хотите — значит это именно желание/каприз, а не конкретная задача. Вот когда поясните как-то иначе, кроме «а как еще можно?», тогда может и появится еще какой-то вариант. Ибо решать задачу просто из разряда «накидайте мне разных вариантов» вряд ли кто захочет.
Научитесь читать то, что пишут, а не то, что хотите прочесть:

Цитата
Дмитрий(The_Prist) Щербаков написал:
никто не понимает почему нельзя Union и почему не подходят другие предложенные варианты.

Изменено: Дмитрий(The_Prist) Щербаков20.12.2022 11:10:03

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

tchack

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

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

#29

11.01.2023 12:18:45

Подскажите, пожалуйста, почему не работает вариант:

Код
Debug.Print WorksheetFunction.CountBlank(Sheet1.Range("Таблица1[ОДИН],Таблица1[ПЯТЬ],Таблица1[ВОСЕМЬ]"))

но работает:

Код
Debug.Print WorksheetFunction.CountBlank(Sheet1.Range("O2:O7", "R2:R7"))
 

New

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

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

#30

11.01.2023 12:43:22

потому что у вас неверная запись при обращении к объектам
P.S. Поиск костылей продолжается )

Изменено: New11.01.2023 12:44:55

Excel VBA Columns Property

VBA Columns property is used to refer to columns in the worksheet. Using this property we can use any column in the specified worksheet and work with it.

When we want to refer to the cell, we use either the Range object or Cells property. Similarly, how do you refer to columns in VBA? We can refer to columns by using the “Columns” property. Look at the syntax of COLUMNS property.

Table of contents
  • Excel VBA Columns Property
    • Examples
      • Example #1
      • Example #2 – Select Column Based on Variable Value
      • Example #3 – Select Column Based on Cell Value
      • Example #4 – Combination of Range & Column Property
      • Example #5 – Select Multiple Columns with Range Object
    • Recommended Articles

Columns Property

We need to mention the column number or header alphabet to reference the column.

For example, if we want to refer to the second column, we can write the code in three ways.

Columns (2)

Columns(“B:B”)

Range (“B:B”)

Examples

You can download this VBA Columns Excel Template here – VBA Columns Excel Template

Example #1

If you want to select the second column in the worksheet, then first, we need to mention the column number we need to select.

Code:

Sub Columns_Example()

  Columns (2)

End Sub

Now, put a dot (.) to choose the “Select” method.

One of the problems with this property is we do not get to see the IntelliSense list of VBA.

Code:

Sub Columns_Example()

  Columns(2).Select

End Sub

So, the above VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more will select the second column of the worksheet.

VBA Columns Example

Instead of mentioning the column number, we can use the column header alphabet “B” to select the second column.

Code:

Sub Columns_Example()

  Columns("B").Select
  Columns("B:B").Select

End Sub

The above codes will select column B, i.e., the second column.

Example #2 – Select Column Based on Variable Value

We can also use the variable to select the column number. For example, look at the below code now.

Code:

Sub Columns_Example()

  Dim ColNum As Integer
  ColNum = 4
  Columns(ColNum).Select

End Sub

In the above, we have declared the variable as “Integer” and assigned the value of 4 to this variable.

We have supplied this variable instead of the column number for the Column’s property. Since the variable holds the value of 4, it will select the 4th column.

Example #3 – Select Column Based on Cell Value

We have seen how to select the column based on variable value now. Next, we will see how we can select the column based on the cell value number. For example, in cell A1 we have entered the number 3.

VBA Columns Example 1

The code below will select the column based on the number in cell A1.

Code:

Sub Columns_Example()

  Dim ColNum As Integer
  ColNum = Range("A1").Value
  Columns(ColNum).Select

End Sub

The above code is the same as the previous one. Still, the only thing we have changed here is instead of assigning the direct number to the variable. Instead, we gave a variable value as “whatever the number is in cell A1.”

Since we have a value of 3 in cell A1, it will select the third column.

Example #4 – Combination of Range & Column Property

We can also use the Columns property with the Range object. Using the Range object, we can specify the specific range. For example, look at the below code.

Code:

Sub Columns_Example1()

  Range("C1:D5").Columns(2).Select

End Sub

In the above example, we have specified the range of cells as C1 to D5. Then, using the columns property, we have specified the column number as 2 to select.

Now, in general, our second column is B. So the code has to select the “B” column but see what happens when we run the code.

Example 2

It has selected the cells from D1 to D5.

In our perception, it should have selected the second column, i.e., column B. But now, it has selected the cells from D1 to D5.

It has selected these cells because before using the COLUMNS property, we have specified the range using the RANGE object as C1 to D5. Now, the property thinks within this range as the columns and selects the second column in the range C1 to D5. Therefore, D is the second column, and specified cells are D1 to D5.

Example #5 – Select Multiple Columns with Range Object

Using the Range object and Columns property, we can select multiple columns. For example, look at the below code.

Code:

Sub Columns_Example1()

  Range(Columns(2), Columns(5)).Select

End Sub

The code will select the column from the second column to the fifth column, i.e., from column B to E.

Example 3

We can also write the code in this way.

Code:

Sub Columns_Example1()

  Range(Columns(B), Columns(E)).Select

End Sub

The above is the same as the previous one and selects the columns from B to E.

Like this, we can use the COLUMNS property to work with the worksheet.

Recommended Articles

This article has been a guide to VBA Columns. Here, we discuss examples of the column property in Excel VBA and select multiple columns with the range object and downloadable Excel templates. Below are some useful articles related to VBA: –

  • DateSerial Function in Excel VBA
  • Hide Columns in VBA
  • Insert Columns in VBA
  • Delete Column in VBA
  • VBA Variable Types

Содержание

  1. Свойство Range.Columns (Excel)
  2. Синтаксис
  3. Замечания
  4. Пример
  5. Поддержка и обратная связь
  6. Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
  7. Выбор ячейки на активном листе
  8. Выбор ячейки на другом листе в той же книге
  9. Выбор ячейки на листе в другой книге
  10. Выбор диапазона ячеек на активном листе
  11. Выбор диапазона ячеек на другом листе в той же книге
  12. Выбор диапазона ячеек на листе в другой книге
  13. Выбор именованного диапазона на активном листе
  14. Выбор именованного диапазона на другом листе в той же книге
  15. Выбор именованного диапазона на листе в другой книге
  16. Выбор ячейки относительно активной ячейки
  17. Выбор ячейки относительно другой (не активной) ячейки
  18. Выбор смещения диапазона ячеек из указанного диапазона
  19. Выбор указанного диапазона и изменение его размера
  20. Выбор указанного диапазона, его смещение и изменение размера
  21. Выбор объединения двух или более указанных диапазонов
  22. Выбор пересечения двух или более указанных диапазонов
  23. Выбор последней ячейки столбца непрерывных данных
  24. Выбор пустой ячейки в нижней части столбца непрерывных данных
  25. Выбор целого диапазона смежных ячеек в столбце
  26. Как выбрать весь диапазон несмежных ячеек в столбце
  27. Выбор прямоугольного диапазона ячеек
  28. Выбор нескольких несмежных столбцов разной длины
  29. Примечания к примерам
  30. Excel VBA — select multiple columns not in sequential order
  31. 5 Answers 5
  32. Linked
  33. Related
  34. Hot Network Questions
  35. Subscribe to RSS
  36. Объект Range (Excel)
  37. Примечания
  38. Пример
  39. Методы
  40. Свойства
  41. См. также
  42. Поддержка и обратная связь

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

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

Синтаксис

expression. Столбцы

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

Замечания

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

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

Возвращаемый диапазон может находиться за пределами указанного диапазона. Например, Range(«A1:B2»).Columns(5).Select возвращает ячейки E1:E2.

Если буква используется в качестве индекса, она эквивалентна числу. Например, Range(«B1:C10»).Columns(«B»).Select возвращает ячейки C1:C10, а не ячейки B1:B10. В примере «B» эквивалентно 2.

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

Пример

В этом примере для каждой ячейки в столбце один в диапазоне с именем myRange задается значение 0 (ноль).

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

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

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

Источник

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

Источник

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.20.43327

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

Источник

Объект Range (Excel)

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

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Примечания

Элемент по умолчанию объекта Range направляет вызовы без параметров в свойство Value, а вызовы с параметрами — в элемент Item. Таким образом, someRange = someOtherRange соответствует someRange.Value = someOtherRange.Value , someRange(1) соответствует someRange.Item(1) и someRange(1,1) соответствует someRange.Item(1,1) .

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

  • Свойства Range и Cells объекта Worksheet
  • Свойства Range и Cells объекта Range
  • Свойства Rows и Columns объекта Worksheet
  • Свойства Rows и Columns объекта Range
  • Свойство Offset объекта Range
  • Метод Union объекта Application

Пример

Чтобы вернуть объект Range, представляющий одну ячейку или диапазон ячеек, используйте синтаксис Range ( arg ), где arg обозначает диапазон. В следующем примере значение ячейки A1 помещается в ячейку A5.

В следующем примере диапазон A1:H8 заполняется случайными числами путем задания формулы для каждой ячейки в диапазоне. При использовании без квалификатора объекта (объекта слева от точки) свойство Range возвращает диапазон на активном листе. Если активное окно не является листом, метод завершается с ошибкой.

Используйте метод Activate объекта Worksheet, чтобы активировать лист перед использованием свойства Range без явного квалификатора объекта.

В следующем примере очищается содержимое диапазона Criteria.

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

Чтобы получить диапазон, содержащий все отдельные ячейки листа, используйте свойство Cells на листе. Вы можете обращаться к отдельным ячейкам, используя синтаксис Item(строка, столбец), где строка — индекс строки, а столбец — индекс столбца. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги ячейке A1 присваивается значение 24, а в ячейке B1 — значение 42.

В следующем примере задается формула для ячейки A2.

Хотя также можно использовать Range(«A1») , чтобы вернуть значение ячейки A1, иногда свойство Cells может быть удобнее, так как позволяет использовать переменную для строки или столбца. В следующем примере создаются заголовки столбцов и строк на листе Sheet1. Обратите внимание, что после активации листа можно использовать свойство Cells без явного объявления листа (оно возвращает ячейку на активном листе).

Хотя для изменения ссылок в стиле A1 можно использовать строковые функции Visual Basic, проще (и лучше при программировании) использовать нотацию Cells(1, 1) .

Используйте синтаксис_выражение_.Cells, где выражение возвращает объект Range, чтобы получить диапазон с тем же адресом, состоящий из отдельных ячеек. В таком диапазоне отдельные ячейки доступны с помощью синтаксиса Item(строка, столбец) относительно левого верхнего угла первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги в ячейках C5 и D5 указывается формула.

Чтобы вернуть объект Range, используйте синтаксис Range ( ячейка1, ячейка2 ), где ячейка1 и ячейка2 — это объекты Range, указывающие начальную и конечную ячейки. В следующем примере устанавливается тип линии границы для ячеек A1:J10.

Имейте в виду, что точка перед каждым появлением свойства Cells является обязательной, если результат предыдущего оператора With нужно применять к свойству Cells. В данном случае указано, что ячейки расположены на листе один (без точки свойство Cells будет возвращать ячейки активного листа).

Чтобы получить диапазон, содержащий все строки листа, используйте свойство Rows на листе. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это индекс строки. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

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

В следующем примере удаляются строки 5 и 10 первого листа активной книги.

Чтобы получить диапазон, содержащий все столбцы листа, используйте свойство Columns на листе. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это индекс столбца в виде числа или адреса столбца в формате А1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

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

В следующем примере удаляются столбцы B, C, E и J первого листа активной книги.

Используйте синтаксис_выражение_.Rows, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из строк первой области диапазона. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это относительный индекс строки от верхнего края первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

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

В следующем примере удаляются диапазоны C8:D8 и C6:D6 первого листа активной книги.

Используйте синтаксис_выражение_.Columns, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из столбцов первой области диапазона. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это относительный индекс столбца от левого края первой области диапазона, указанный в виде числа или адреса столбца в формате A1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

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

В следующем примере удаляются диапазоны L2:L10, G2:G10, F2:F10 и D2:D10 первого листа активной книги.

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

Используйте синтаксис Union ( диапазон1, диапазон2, . ) для возврата диапазонов из нескольких областей, то есть диапазонов, состоящих из двух или более смежных блоков ячеек. В следующем примере создается объект, определенный как объединение диапазонов A1:B2 и C3:D4, а затем выбирается определенный диапазон.

При работе с выделенными фрагментами, содержащими несколько областей, удобно применять свойство Areas. Оно разделяет выделенный фрагмент с несколькими областями на отдельные объекты Range, а затем возвращает объекты в виде коллекции. Используйте свойство Count в возвращенной коллекции, чтобы убедиться, что выделение содержит более одной области, как показано в следующем примере.

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

Методы

Свойства

См. также

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

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

Источник

In this Article

  • Select Entire Rows or Columns
    • Select Single Row
    • Select Single Column
    • Select Multiple Rows or Columns
    • Select ActiveCell Row or Column
    • Select Rows and Columns on Other Worksheets
    • Is Selecting Rows and Columns Necessary?
  • Methods and Properties of Rows & Columns
    • Delete Entire Rows or Columns
    • Insert Rows or Columns
    • Copy & Paste Entire Rows or Columns
    • Hide / Unhide Rows and Columns
    • Group / UnGroup Rows and Columns
    • Set Row Height or Column Width
    • Autofit Row Height / Column Width
  • Rows and Columns on Other Worksheets or Workbooks
  • Get Active Row or Column

This tutorial will demonstrate how to select and work with entire rows or columns in VBA.

First we will cover how to select entire rows and columns, then we will demonstrate how to manipulate rows and columns.

Select Entire Rows or Columns

Select Single Row

You can select an entire row with the Rows Object like this:

Rows(5).Select

Or you can use EntireRow along with the Range or Cells Objects:

Range("B5").EntireRow.Select

or

Cells(5,1).EntireRow.Select

You can also use the Range Object to refer specifically to a Row:

Range("5:5").Select

Select Single Column

Instead of the Rows Object, use the Columns Object to select columns. Here you can reference the column number 3:

Columns(3).Select

or letter “C”, surrounded by quotations:

Columns("C").Select

Instead of EntireRow, use EntireColumn along with the Range or Cells Objects to select entire columns:

Range("C5").EntireColumn.Select

or

Cells(5,3).EntireColumn.Select

You can also use the Range Object to refer specifically to a column:

Range("B:B").Select

Select Multiple Rows or Columns

Selecting multiple rows or columns works exactly the same when using EntireRow or EntireColumn:

Range("B5:D10").EntireRow.Select

or

Range("B5:B10").EntireColumn.Select

However, when you use the Rows or Columns Objects, you must enter the row numbers or column letters in quotations:

Rows("1:3").Select

or

Columns("B:C").Select

Select ActiveCell Row or Column

To select the ActiveCell Row or Column, you can use one of these lines of code:

ActiveCell.EntireRow.Select

or

ActiveCell.EntireColumn.Select

Select Rows and Columns on Other Worksheets

In order to select Rows or Columns on other worksheets, you must first select the worksheet.

Sheets("Sheet2").Select
Rows(3).Select

The same goes for when selecting rows or columns in other workbooks.

Workbooks("Book6.xlsm").Activate
Sheets("Sheet2").Select
Rows(3).Select

Note: You must Activate the desired workbook. Unlike the Sheets Object, the Workbook Object does not have a Select Method.

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!

automacro

Learn More

Is Selecting Rows and Columns Necessary?

However, it’s (almost?) never necessary to actually select Rows or Columns. You don’t need to select a Row or Column in order to interact with them. Instead, you can apply Methods or Properties directly to the Rows or Columns. The next several sections will demonstrate different Methods and Properties that can be applied.

You can use any method listed above to refer to Rows or Columns.

Methods and Properties of Rows & Columns

Delete Entire Rows or Columns

To delete rows or columns, use the Delete Method:

Rows("1:4").Delete

or:

Columns("A:D").Delete

VBA Programming | Code Generator does work for you!

Insert Rows or Columns

Use the Insert Method to insert rows or columns:

Rows("1:4").Insert

or:

Columns("A:D").Insert

Copy & Paste Entire Rows or Columns

Paste Into Existing Row or Column

When copying and pasting entire rows or columns you need to decide if you want to paste over an existing row / column or if you want to insert a new row / column to paste your data.

These first examples will copy and paste over an existing row or column:

Range("1:1").Copy Range("5:5")

or

Range("C:C").Copy Range("E:E")

Insert & Paste

These next examples will paste into a newly inserted row or column.

This will copy row 1 and insert it into row 5, shifting the existing rows down:

Range("1:1").Copy
Range("5:5").Insert

This will copy column C and insert it into column E, shifting the existing columns to the right:

Range("C:C").Copy
Range("E:E").Insert

Hide / Unhide Rows and Columns

To hide rows or columns set their Hidden Properties to True. Use False to hide the rows or columns:

'Hide Rows
Rows("2:3").EntireRow.Hidden = True

'Unhide Rows
Rows("2:3").EntireRow.Hidden = False

or

'Hide Columns
Columns("B:C").EntireColumn.Hidden = True

'Unhide Columns
Columns("B:C").EntireColumn.Hidden = False

Group / UnGroup Rows and Columns

If you want to Group rows (or columns) use code like this:

'Group Rows
Rows("3:5").Group

'Group Columns
Columns("C:D").Group

To remove the grouping use this code:

'Ungroup Rows
Rows("3:5").Ungroup

'Ungroup Columns
Columns("C:D").Ungroup

This will expand all “grouped” outline levels:

ActiveSheet.Outline.ShowLevels RowLevels:=8, ColumnLevels:=8

and this will collapse all outline levels:

ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1

Set Row Height or Column Width

To set the column width use this line of code:

Columns("A:E").ColumnWidth = 30

To set the row height use this line of code:

Rows("1:1").RowHeight = 30

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

Autofit Row Height / Column Width

To Autofit a column:

Columns("A:B").Autofit

To Autofit a row:

Rows("1:2").Autofit

Rows and Columns on Other Worksheets or Workbooks

To interact with rows and columns on other worksheets, you must define the Sheets Object:

Sheets("Sheet2").Rows(3).Insert

Similarly, to interact with rows and columns in other workbooks, you must also define the Workbook Object:

Workbooks("book1.xlsm").Sheets("Sheet2").Rows(3).Insert

Get Active Row or Column

To get the active row or column, you can use the Row and Column Properties of the ActiveCell Object.

MsgBox ActiveCell.Row

or

MsgBox ActiveCell.Column

This also works with the Range Object:

MsgBox Range("B3").Column

Содержание

  • Выбрать целые строки или столбцы
  • Методы и свойства строк и столбцов
  • Строки и столбцы на других листах или книгах
  • Получить активную строку или столбец

В этом руководстве будет показано, как выбирать и работать с целыми строками или столбцами в VBA.

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

Выбрать целые строки или столбцы

Выбрать одну строку

Вы можете выбрать всю строку с помощью Строки объекта нравится:

Или вы можете использовать Весь ряд вместе с Диапазон или Объекты Cells:

1 Диапазон («B5»). Весь ряд. Выбрать

или

1 Ячейки (5,1) .EntireRow.Select

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

1 Диапазон («5: 5»). Выберите

Выбрать один столбец

Вместо Строки объекта, использовать Столбцы Объект для выбора столбцов. Здесь вы можете сослаться на столбец номер 3:

или буква «C», окруженная цитатами:

Вместо того Весь ряд, использовать Весь столбец вместе с Диапазон или Объекты Cells для выбора целых столбцов:

1 Диапазон («C5»). Весь столбец. Выбрать

или

1 Ячейки (5,3) .EntireColumn.Select

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

1 Диапазон («B: B»). Выберите

Выберите несколько строк или столбцов

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

1 Диапазон («B5: D10»). Весь ряд. Выбрать

или

1 Диапазон («B5: B10»). Весь столбец. Выбрать

Однако, когда вы используете объекты Rows или Columns, вы должны вводить номера строк или буквы столбцов в кавычках:

1 Ряды («1: 3»). Выберите

или

1 Столбцы («B: C»). Выберите

Выберите строку или столбец ActiveCell

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

1 ActiveCell.EntireRow.Select

или

1 ActiveCell.EntireColumn.Select

Выберите строки и столбцы на других листах

Чтобы выбрать строки или столбцы на других листах, вы должны сначала выбрать рабочий лист.

12 Таблицы («Лист2»). ВыберитеРяды (3) .Выбрать.

То же самое происходит при выборе строк или столбцов в других книгах.

123 Книги («Book6.xlsm»). АктивироватьТаблицы («Лист2»). ВыберитеРяды (3) .Выбрать.

Примечание: вы должны Активировать желаемую книгу. в отличие от Листы Объект, то Объект книги не имеет Выбрать метод.

Нужно ли выбирать строки и столбцы?

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

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

Методы и свойства строк и столбцов

Удалить целые строки или столбцы

Чтобы удалить строки или столбцы, используйте Удалить метод:

1 Строки («1: 4»). Удалить.

или:

1 Столбцы («A: D»). Удалить

Вставить строки или столбцы

Использовать Вставить метод для вставки строк или столбцов:

1 Ряды («1: 4»). Вставить

или:

1 Столбцы («A: D»). Вставить

Копировать и вставлять целые строки или столбцы

Вставить в существующую строку или столбец

При копировании и вставке целых строк или столбцов вам необходимо решить, хотите ли вы вставить поверх существующей строки / столбца или вы хотите вставить новую строку / столбец для вставки данных.

Эти первые примеры будут копировать и вставлять существующую строку или столбец:

1 Диапазон («1: 1»). Копировать диапазон («5: 5»)

или

1 Диапазон («C: C»). Копировать диапазон («E: E»)

Вставить и вставить

Эти следующие примеры будут вставлены во вновь вставленную строку или столбец.

Это скопирует строку 1 и вставит ее в строку 5, сдвинув существующие строки вниз:

12 Диапазон («1: 1»). КопироватьДиапазон («5: 5»). Вставить

Это скопирует столбец C и вставит его в столбец E, сдвинув существующие столбцы вправо:

12 Диапазон («C: C»). КопироватьДиапазон («E: E»). Вставить

Скрыть / показать строки и столбцы

Чтобы скрыть строки или столбцы, установите их Скрытые свойства к True. Используйте False, чтобы скрыть строки или столбцы:

12345 ‘Скрыть строкиСтроки («2: 3»). CompleteRow.Hidden = True’Показать строкиСтроки («2: 3»). CompleteRow.Hidden = False

или

12345 ‘Скрыть столбцыСтолбцы («B: C»). CompleteColumn.Hidden = True’Показать столбцыСтолбцы («B: C»). CompleteColumn.Hidden = False

Группировать / разгруппировать строки и столбцы

Если вы хотите сгруппировать строки (или столбцы), используйте такой код:

12345 ‘Групповые строкиРяды («3: 5»). Группа’Столбцы группыСтолбцы («C: D»). Группа

Чтобы удалить группировку, используйте этот код:

12345 ‘Разгруппировать строкиРяды («3: 5»). Разгруппировать.’Разгруппировать столбцыСтолбцы («C: D»). Разгруппировать

Это расширит все «сгруппированные» уровни структуры:

1 ActiveSheet.Outline.ShowLevels RowLevels: = 8, ColumnLevels: = 8

и это свернет все уровни структуры:

1 ActiveSheet.Outline.ShowLevels RowLevels: = 1, ColumnLevels: = 1

Установить высоту строки или ширину столбца

Чтобы установить ширину столбца, используйте эту строку кода:

1 Столбцы («A: E»). Ширина столбца = 30

Чтобы установить высоту строки, используйте эту строку кода:

1 Ряды («1: 1»). RowHeight = 30

Автоподбор высоты строки / ширины столбца

Для автозаполнения столбца:

1 Столбцы («A: B»). Автоподбор

Для автоматического заполнения строки:

1 Ряды («1: 2»). Автоподбор

Строки и столбцы на других листах или книгах

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

1 Листы («Лист2»). Ряды (3) .Вставить

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

1 Рабочие тетради («book1.xlsm»). Листы («Sheet2»). Строки (3). Вставить

Получить активную строку или столбец

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

или

1 MsgBox ActiveCell.Column

Это также работает с Объект диапазона:

1 MsgBox Range («B3»). Столбец

AndreA SN

1014 / 118 / 2

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

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

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

1

05.04.2018, 14:29. Показов 15264. Ответов 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



Понравилась статья? Поделить с друзьями:
  • Vba excel выбрать другой лист
  • Vba excel вхождение подстроки строку
  • Vba excel вставка рисунка
  • Vba excel вставка новой строки
  • Vba excel вызов sub