webentwicklung-frage-antwort-db.com.de

Excel VBA - Wählen Sie mehrere Spalten nicht in sequentieller Reihenfolge aus

Ich möchte mehrere Spalten auswählen.

Z.B. Ich möchteselect column a, b, d, e, g, h

Ich habe es versucht:

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

Ich bekomme error message:Type mismatch.

12
HL8

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

Anmerkung bearbeiten: Ich habe gerade gesehen, dass Sie eine andere Spaltenreihenfolge verwendet haben. Ich habe meine Antwort aktualisiert

27
HRgiger

Einige Dinge von ganz oben.

Methode 1.

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

Methode 2.

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

Methode 3

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

Ein Teil des Codes sieht für mich etwas komplex aus. Dies ist ein sehr einfacher Code, um nur die verwendeten Zeilen in zwei nicht zusammenhängenden Spalten D und H auszuwählen. Es wird davon ausgegangen, dass die Spalten ungleich lang sind und daher flexibler sind, wenn die Spalten gleich lang sind.

Wie Sie am wahrscheinlichsten vermuteten, ist 4 = Spalte D und 8 = Spalte 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

Ich hoffe, dass Sie nützlich sind - VERGESSEN SIE NICHT, DASS COMMA VOR DER ZWEITEN SPALTE WIE ICH TAT, OR ES WIRD BOMBEN !!

1

Bei der Arbeit an einem Projekt war ich einige Zeit mit diesem Konzept beschäftigt - ich bekam eine ähnliche Antwort auf die Methode 1 von @GSerg, die großartig funktionierte. Im Wesentlichen habe ich zwei Formelbereiche definiert (mit einigen Variablen) und dann das Union-Konzept verwendet. Mein Beispiel ist aus einem größeren Projekt, an dem ich gerade arbeite, aber hoffentlich kann der folgende Teil des Codes einigen anderen helfen, die möglicherweise nicht wissen, wie das Union-Konzept in Verbindung mit definierten Bereichen und Variablen verwendet wird. Ich habe nicht den gesamten Code eingefügt, da es an dieser Stelle ziemlich lang ist - wenn jemand mehr Einsicht wünscht, kann er mich gerne informieren.

Zuerst habe ich alle meine Variablen als öffentlich deklariert

Dann habe ich jede Variable definiert/gesetzt

Zum Schluss habe ich eine neue Variable "SelectRanges" als Union zwischen den beiden anderen FormulaRanges gesetzt

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)
0
Jonh

Als aufgezeichnetes Makro.

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