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
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
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
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üßeSub 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
Um mehrere Spalten in Excel mit VBA auszuwählen, kannst Du die Columns-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne den Visual Basic for Applications (VBA) Editor in Excel mit Alt + F11.
Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject (DeineDatei)" klickst und "Einfügen" > "Modul" auswählst.
Kopiere den folgenden Code in das Modul:
Sub MehrereSpaltenAuswaehlen()
Columns("A:A,E:E,G:G").Select
End Sub
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
Fehler: "Methode 'Columns' von 'Range' nicht gefunden"
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"
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
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.
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
Range verwenden, um mehrere Bereiche auszuwählen, z.B. Range("A:A,E:E,G:G").Select.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.