Excel VBA - выбор нескольких столбцов не в последовательном порядке

Я хотел бы выбрать столбцы multiple.

Eg. Я хочу select column a, b, d, e, g, h

Я пробовал:

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

Я получаю сообщение error: Type mismatch.

Ответ 1

Range("A:B,D:E,G:H").Select может помочь

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

Ответ 2

Некоторые вещи в моей голове.

Метод 1.

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

Способ 2.

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

Способ 3.

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

Ответ 3

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

Как вы, скорее всего, предположили 4 = столбец D и 8 = столбец 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

Надеюсь, что вы сочтете полезным - НЕ ЗАБЫВАЙТЕ, ЧТО COMMA ПЕРЕД ВТОРОЙ КОЛОНКОЙ, КАК Я ДОЛЖЕН, ИЛИ ЭТО БОМБ!

Ответ 4

Работая над проектом, я некоторое время придерживался этой концепции - в итоге я получил аналогичный ответ на метод 1 от @GSerg, который отлично работал. По сути, я определил два диапазона формул (используя несколько переменных), а затем использовал концепцию Союза. Мой пример - из более крупного проекта, над которым я работаю, но, надеюсь, часть кода ниже может помочь некоторым другим людям, которые могут не знать, как использовать концепцию Союза в сочетании с определенными диапазонами и переменными. Я не включил весь код, потому что на данный момент он довольно длинный - если кто-то хочет больше понимания, не стесняйтесь, дайте мне знать.

Сначала я объявил все мои переменные как Public

Затем я определил/установил каждую переменную

Наконец, я установил новую переменную "SelectRanges" как союз между двумя другими 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)