2012-01-17 26 views
10

複数の列を選択します。Excel VBA - 複数の列を連続して選択しない

例:私はselect column a, b, d, e, g, h

に私が試したとしますType mismatch

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

私はエラーにメッセージが表示されます。

+1

操作するセルを選択する必要はほとんどありません。実際に何をしようとしていますか? – Reafidy

+0

Reafidyは正しいです。 BTW HL8、あなたはマクロを記録できることを知っていますか?) –

答えて

23

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

編集ノートを助けることができる:私はちょうどあなたが別の列の順序を使用していました、私は

+0

タイトルは非連続であり、あなたのメソッドは 'C'と' H'の間のすべてのカラムを選択しますが、これはOPが後であるとは思いません。 –

+0

うん、私は更新した、ごめんな誤読:) – HRgiger

+1

@HRgigerどのようにそれらのセルの値を配列に取得できますか? このクエリは可能ですか? someArray = Range( "B4:B9、S4:S9")。値 –

18

に私の頭の上のいくつかのことを私の答えを更新しました。私はWAプロジェクトに取り組んで

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

**メソッド3 **は、列全体ではなく定義済みの名前付き範囲を扱うための最適なソリューションです。 'Application.Union。(range1、range2、range3).select'は素晴らしいです。 私はこのソリューション(コピーと貼り合わせのため)は、範囲が同じサイズであることを必要とすると考えています。 –

0

このコンセプトについてしばらくの間立ち往生していました。@GSergの方法1に似たような回答がありました。基本的には、2つの数式範囲(いくつかの変数を使用)を定義し、Union概念を使用しました。私の例は、私が取り組んでいるより大きいプロジェクトですが、下のコードの部分は、定義された範囲と変数と組み合わせてUnion概念を使用する方法を知らない人を助けることができればうれしいです。私はコード全体を含んでいませんでした。なぜなら、この時点でかなり長い時間がかかるからです。

初公開

は、その後、私は最後に、私は他の二つの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) 
1
間連合のような新しい変数「SelectRanges」を設定し、各変数

を設定/定義されるように私はすべての変数を宣言しました

コードのいくつかは私にとっては少し複雑です。これは、2つの不連続な列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 

はあなたが役に立つことを願っ推測として - 私はDID、またはそれは爆弾れるように、第二のカラムの前にカンマていることを忘れないでください! !

0

記録されたマクロとして。

range("A:A, B:B, D:D, E:E, G:G, H:H").select 
関連する問題