Excel VBA - 不按顺序选择多个列

时间:2012-01-17 00:49:42

标签: excel-vba vba excel

我想选择多个列。

EG。我想 select column a, b, d, e, g, h

我试过了:

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

我收到错误消息: Type mismatch

5 个答案:

答案 0 :(得分:28)

Range("A:B,D:E,G:H").Select可以提供帮助

编辑注释:我刚看到你使用了不同的列序列,我已经更新了我的答案

答案 1 :(得分:18)

我头脑中的一些事情。

方法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

答案 2 :(得分:1)

有些代码看起来有点复杂。这是一个非常简单的代码,只选择两个不连续的列D和H中使用的行。它假定列的长度不等,因此如果列的长度相等则更灵活。

你最有可能推测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

希望你找到有用的东西 - 不要在第二列之前忘记它,不管怎么说,或者它会炸毁!!

答案 3 :(得分:0)

在一个项目上工作我在这个概念上停留了一段时间 - 我最终得到了@GSerg对方法1的类似答案,效果很好。基本上我定义了两个公式范围(使用一些变量),然后使用了Union概念。我的例子来自我正在开展的一个更大的项目,但希望下面的代码部分可以帮助其他可能不知道如何结合定义的范围和变量使用Union概念的人。我没有包含整个代码,因为此时它已经相当长了 - 如果有人想要更多的洞察力,请随时告诉我。

首先,我将所有变量声明为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)

答案 4 :(得分:0)

作为录制的宏。

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