Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten markieren mit vba Columns(1,5,7).Select

Spalten markieren mit vba Columns(1,5,7).Select
10.08.2017 08:39:31
Dasha
Hallo Leute,
ich habe nur eine kurze Frage.
Gibt es eine Möglichkeit Spalten (1,5,7) mit dem Befehl Columns(1, 5, 7).Select zu markieren?
Liebe Grüße!
Dasha
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Range("A:A,E:E,G:G").Select (owT)
10.08.2017 09:02:25
EtoPHG

AW: Range("A:A,E:E,G:G").Select (owT)
10.08.2017 09:23:25
Dasha
Befehl funktioniert nicht.
iCh brauchte das mit columns und nicht range
aha, darum also VBA gut ;-) (owT)
10.08.2017 09:57:08
EtoPHG

Anzeige
Daumen hoch, gefällt mir ;-) (owT)
10.08.2017 10:14:03
Martin
Hier mit Nummern, so wie Du es möchtest
10.08.2017 09:23:28
lupo1

Sub SpaltenNachNummerlisteSelektieren()
SpZ = "1,5,7" 'hier würde man stattdessen ein Argument verwenden
Arr = Split(SpZ, ",")
For Each i In Arr
SpB = SpB & "," & Chr(i + 64) & ":" & Chr(i + 64)
Next
Range(Mid(SpB, 2, 999)).Select
End Sub

Anzeige
was bei z.B. Spalte(1,5,50) oder(1,5,35) ;-) owT
10.08.2017 09:37:24
Matthias
berechtigter Einwand
10.08.2017 09:49:46
lupo1

Sub SpaltenNachNummerlisteSelektieren()
SpZ = "27,29,53"
Arr = Split(SpZ, ",")
For Each i In Arr
j = Evaluate("=SUBSTITUTE(ADDRESS(1," & i & ",4),1,)")
SpB = SpB & "," & j & ":" & j
Next
Range(Mid(SpB, 2, 999)).Select
End Sub

Anzeige
AW: Range("A:A,E:E,G:G").Select (owT)
10.08.2017 09:25:22
Matthias
Bitte keine versteckte doppelte Werbung für einen Haushaltsgerätehersteller ";-);-)"
GetColumns(1, 3, 5).Select
10.08.2017 09:53:39
Martin
Hallo Dasha,
wie wäre es damit:
Sub Beispiel()
GetColumns(1, 3, 5).Select
End Sub
Function GetColumns(ParamArray arrCol() As Variant) As Range
Dim i As Integer, rngCols As Range
For i = 0 To UBound(arrCol)
If i = 0 Then
Set rngCols = Columns(arrCol(i))
Else
Set rngCols = Application.Union(rngCols, Columns(arrCol(i)))
End If
Next
Set GetColumns = rngCols
End Function
Viele Grüße
Martin
Anzeige
Sogar so geht es: GetColumns(1, "E:E", 7).Select
10.08.2017 11:22:52
Martin
Mir ist erst jetzt aufgefallen, dass so auch "Mischangaben" möglich sind:
Sub Beispiel()
GetColumns(1, "E:E", 7).Select
End Sub

Function GetColumns(ParamArray arrCol() As Variant) As Range
Dim i As Integer, rngCols As Range
For i = 0 To UBound(arrCol)
If i = 0 Then
Set rngCols = Columns(arrCol(i))
Else
Set rngCols = Application.Union(rngCols, Columns(arrCol(i)))
End If
Next
Set GetColumns = rngCols
End Function

Anzeige
und mehr als 30 Arg.(Union) gehen auch ;-) owT
10.08.2017 11:47:20
Matthias
Interessant, die Union-Grenze kann ich nicht. owT
10.08.2017 12:16:42
Martin
Interessant, die Union-Grenze kannte ich nicht.owT
10.08.2017 12:17:22
Martin
Anzeige
Union(Columns(1), Columns(5), Columns(7)).Select
10.08.2017 10:07:44
Case
:-)
warum leicht wenn es auch schwer geht?
10.08.2017 10:12:34
Martin
Hallo Case,
ich war so stolz auf meine Lösung, aber deine ist einfach nur genial ;-)
- es ärgert mich nur ein wenig, dass es quasi die Kurzfom meiner Lösung ist und ich nicht selbst darauf gekommen bin.
Viele Grüße, Martin
Deine ist voll ok, Martin, weil die von Case ...
10.08.2017 10:49:21
Case
"mengenhart" im Code steht. Es sind ja nicht immer genau 3 Spalten.
Anzeige
Ich danke dir ;-) (owT)
10.08.2017 11:14:59
Martin
Entschuldiung und Danke an Case, lupo1, Mathias un
10.08.2017 13:50:08
Dasha
Ich musste schnell weg und habe die Vorschläge von Case, lupo1, Mathias und Martin nun ausprobiert. Leider hilft das alles mir nicht weiter, obwohl eure Befehle funktionierne. Also vielen dank schon mal für eure Hilfe!
Ich schreibe im nächsten Post, nun mit Bildern, was nicht klappt. Ich bin schon seit Dienstag dran und es klappt einfach nicht, obwohl es eine Kleinigkeit ist.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten mit VBA in Excel auswählen


Schritt-für-Schritt-Anleitung

Um mehrere Spalten in Excel mit VBA auszuwählen, kannst Du die Columns-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel mit Alt + F11.

  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject (DeineDatei)" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub MehrereSpaltenAuswaehlen()
       Columns("A:A,E:E,G:G").Select
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus. Du wirst sehen, dass die angegebenen Spalten ausgewählt werden.

Wenn Du Spalten nach Nummern auswählen möchtest, kannst Du den Code wie folgt anpassen:

Sub SpaltenNachNummerSelektieren()
    Columns(1).Select ' Wählt die erste Spalte (A)
    Columns(5).Select ' Wählt die fünfte Spalte (E)
    Columns(7).Select ' Wählt die siebte Spalte (G)
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Methode 'Columns' von 'Range' nicht gefunden"

    • Lösung: Stelle sicher, dass Du die Syntax korrekt verwendest. Der Befehl Columns(1, 5, 7).Select führt zu einem Fehler. Verwende stattdessen Union:
    Sub SpaltenMarkieren()
       Union(Columns(1), Columns(5), Columns(7)).Select
    End Sub
  • Fehler: "Das Makro funktioniert nicht"

    • Lösung: Überprüfe, ob Du das richtige Arbeitsblatt aktiviert hast und ob die Spalten existieren.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Arrays, um mehrere Spalten auszuwählen. Hier ist ein Beispiel:

Sub SpaltenMitArrayAuswaehlen()
    Dim arrSpalten As Variant
    arrSpalten = Array(1, 5, 7)
    Dim rng As Range
    Dim i As Integer

    For i = LBound(arrSpalten) To UBound(arrSpalten)
        If rng Is Nothing Then
            Set rng = Columns(arrSpalten(i))
        Else
            Set rng = Union(rng, Columns(arrSpalten(i)))
        End If
    Next i

    rng.Select
End Sub

Praktische Beispiele

Ein praktisches Beispiel für die Verwendung von vba columns und Union:

Sub Beispiel()
    Dim rng As Range
    Set rng = Union(Columns(1), Columns(3), Columns(5)).Select
End Sub

In diesem Beispiel werden die erste, dritte und fünfte Spalte ausgewählt. Du kannst die Spaltennummern nach Bedarf anpassen.


Tipps für Profis

  • Verwende ParamArray, um eine flexible Anzahl von Spalten auszuwählen. Hier ist ein Beispiel:
Function GetColumns(ParamArray arrCol() As Variant) As Range
    Dim i As Integer, rngCols As Range
    For i = 0 To UBound(arrCol)
        If i = 0 Then
            Set rngCols = Columns(arrCol(i))
        Else
            Set rngCols = Application.Union(rngCols, Columns(arrCol(i)))
        End If
    Next
    Set GetColumns = rngCols
End Function
  • Du kannst auch Range verwenden, um mehrere Bereiche auszuwählen, z.B. Range("A:A,E:E,G:G").Select.

FAQ: Häufige Fragen

1. Wie kann ich mehrere nicht aufeinanderfolgende Spalten auswählen? Um mehrere nicht aufeinanderfolgende Spalten auszuwählen, verwende die Union-Methode, wie im obigen Beispiel gezeigt.

2. Gibt es eine Möglichkeit, die Spalten dynamisch auszuwählen? Ja, Du kannst Parameter verwenden, um die Spalten dynamisch auszuwählen. Die Verwendung von ParamArray bietet Flexibilität in der Auswahl.

3. Funktioniert das in allen Excel-Versionen? Die gezeigten VBA-Codes sollten in den meisten aktuellen Excel-Versionen funktionieren, einschließlich Excel 2013, 2016, 2019 und Microsoft 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige