Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA / Excel: Spalten in Schleife durchlaufen

VBA / Excel: Spalten in Schleife durchlaufen
12.12.2006 16:05:14
scarvy
Ähm ja, also ich weiss, ist ein blöder Titel... :p
Ich habe vor einige Auswertungen von Excel-Tablellen zu automatisieren mit VBA. Dazu wird immer die Spalte 'A' markiert und dann zu Beginn die Spalte 'B'. Dann die 'A' und 'C', danach 'A' und 'D' usw. Es handelt sich dabei um ca. 35 Spalten. Aus den markierten Spalten wird dann eine Grafik generiert, die alle hintereinander in einem anderen Arbeitsblatt gespeichert werden sollen.
Mein Problem ist jetzt das Markieren der Spalten. Im ersten Durchlauf also 'A' und 'B'.
Ich habe es bis jetzt damit probiert:
[CODE]
Sheets("arbeitsblatt").Range(Columns(1), Columns(2)).Select
[/CODE]
Ich wollte dann halt über den Index der einzelnen Spalten auf diese zugreifen und den Index danach um 1 erhöhen. Aber leider ist ja bei der oben aufgeführten Lösung der Bereich 'von...bis' angegeben und nicht: 'markiere spalte x und y'.
Wie kann ich also machen, dass es wie hier geht:
[CODE]Range("A:A,B:B,E:E").Select[/CODE]
Hierbei werden ja nur die Spalten A, B, und E markiert.
Ich müsste aber halt über den Index zugreifen, damit ich ihn incrementieren kann...
schon einmal vielen Dank
Raphael
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA / Excel: Spalten in Schleife durchlaufen
12.12.2006 16:10:53
Matthias
Hallo Raphael,
ist die Selektion eine Krücke für deinen Code oder soll den Anwender damit eine Möglichkeit haben, dem Makro Argumente mitzugeben?
Zeig doch mal mehr Code.
Gruß Matthias
AW: VBA / Excel: Spalten in Schleife durchlaufen
12.12.2006 16:23:21
scarvy
Hallo,
also folgendes: Ich habe eine Tabelle mit ca. 35 Spalten. Es soll nun von jeder Spalte eine Grafik ertellt werden, allerdings immer in Verbindung mit der ersten (also 'A').
Der Anwender braucht also quasi keine Argumente für das Makro, da sowieso alle Spalten durchlaufen werden müssen.
zuerst die letzte Zeile/spalte ermitteln:

r = sheets("arbeitsblatt").UsedRange.SpecialCells(xlCellTypeLastCell).Row
c = Sheets("arbeitsblatt").UsedRange.SpecialCells(xlCellTypeLastCell).Column

und nun hatte ich halt vor diese zu durchlaufen, solange int i kleiner c und dabei halt jeweils die Spalte 'A' und die aktuelle Spalte zu markieren, um die Grafik aus diesen beiden Spalten zu erstellen.
... man man mit dem Ausdrücken bei Problemen kanns echt schwierig werden :)
ich hoffe das ist so einigermaßen verständlich... viel code gibts noch nciht zu sehen, da ich mit diesem Problem ziemlich am Anfang hängen geblieben bin...
besten Dank
Raphael
Anzeige
AW: VBA / Excel: Spalten in Schleife durchlaufen
12.12.2006 16:14:49
Reinhard
Hi Raphael,
anstatt der msgbox dann dein Code
Option Explicit
Sub Makro3()
Dim Bereich, n
For n = 2 To 10
Set Bereich = Union(Columns(1), Columns(n))
Bereich.Select
MsgBox n
Next n
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: VBA / Excel: Spalten in Schleife durchlaufen
12.12.2006 16:28:39
scarvy
Hey super!!
Das ist genau das was ich brauche... und ich als VBA-Anfänger such mich 4 Std. dumm und dusselig. :)
Also vielen dank an alle!!
Gruß
Raphael
AW: VBA / Excel: Spalten in Schleife durchlaufen
13.12.2006 12:18:51
scarvy
So, neues Problem -- neues Glück :-)
Habe jetzt folgenden code:

int i = Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Column
For n = 2 To i
Set Bereich = Union(Columns(1), Columns(n))
Bereich.Select

Nun habe ich ja vor ein neues Diagramm zu erzeugen und in ein vorhandenes Tabellenblatt einzufügen. Probieren tue ich es hiermit:

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets(2), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = _
"BlaBla"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

Mein Problem liegt bei "source:=" (da hänge ich zumindest momentan. Was danach kommt weiss ich nicht... :-) ). Ich weiss nicht wie ich hier auf das aktuelle Tabellenblatt und auf die schon vorher markierten Spalten verweise.
Noch mal kurz: Die Daten liegen im Tabellenblatt mit index(2), aus diesen Daten soll eine Grafik (also insgesamt ja mehrere) erzeugt werden und im Tabellenblatt "diagramm" mit index(1) gespeichert werden.
mmhh ich hoffe ihr versteht mich
besten Dank und Gruß
Raphael
Anzeige
AW: VBA / Excel: Spalten in Schleife durchlaufen
13.12.2006 12:44:55
Reinhard
Hi Raphael,
dann war das bisherige alles umsonst, denn zum Diagramm erzeugen muss nix selektiert sein :-)
Am besten du beendest hier und stellst eine neue Anfrage:
wie erzeuge ich per Vba ein LinieneDiagramm mit mehreren Linien, wobie die X-Werte immer
in A stehen, B bis H enthalten die y-Werte, o.ä.
Dazu kannst du ja deinen Code posten, aber als komplette Sub, denn dann bleiben
Formatierungen erhalten.

Gruß
Reinhard
Anzeige
AW: VBA / Excel: Spalten in Schleife durchlaufen
13.12.2006 13:00:59
Matthias
Hallo Raphael,
lass das Bereich.Select weg und schreibe dann:

ActiveChart.SetSourceData Source:=Bereich, PlotBy:=xlColumns

Bereich hast ja vorher den beiden spalten aus Sheets(2) zugewiesen.
Gruß Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten in Excel mit VBA durchlaufen und Diagramme erstellen


Schritt-für-Schritt-Anleitung

Um Spalten in Excel mit VBA durchzulaufen und darauf basierend Diagramme zu erstellen, folge diesen Schritten:

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

  2. Erstelle ein neues Modul:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Option Explicit
    
    Sub SpaltenDurchlaufen()
       Dim n As Integer
       Dim Bereich As Range
       Dim letzteSpalte As Integer
    
       ' Bestimme die letzte Spalte
       letzteSpalte = Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Column
    
       ' Schleife durch alle Spalten
       For n = 2 To letzteSpalte
           Set Bereich = Union(Sheets(2).Columns(1), Sheets(2).Columns(n))
           ' Hier Diagramm erstellen oder weitere Operationen durchführen
       Next n
    End Sub
  4. Um ein Diagramm zu erstellen, füge nach der Union-Anweisung den folgenden Code hinzu:

    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Bereich, PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="diagramm"
  5. Starte das Makro durch Drücken von F5 oder über das Menü "Run".


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Überprüfe, ob das Arbeitsblatt mit dem Namen oder Index existiert. Stelle sicher, dass die Spalten, die Du ansprechen möchtest, auch tatsächlich Daten enthalten.

  • Fehler: „Kein Diagramm ausgewählt“
    Wenn Du versuchst, ein Diagramm zu erstellen, ohne eine Auswahl zu treffen, könnte dies passieren. Beachte, dass für das Erstellen eines Diagramms keine Spalten selektiert sein müssen.


Alternative Methoden

  • Statt die Spalten direkt zu selektieren, kannst Du auch Arrays verwenden, um Daten zu verarbeiten. Das kann die Performance verbessern.

    Dim Daten() As Variant
    Daten = Sheets(2).Range("A1:H10").Value
  • Ein weiterer Ansatz ist die Verwendung von Excel VBA Schleifen, um gezielt durch alle Zellen einer Spalte zu iterieren:

    Dim zelle As Range
    For Each zelle In Sheets(2).Columns(1).Cells
      ' Aktionen mit zelle
    Next zelle

Praktische Beispiele

  1. Diagramm aus mehreren Spalten
    Du kannst den Code erweitern, um mehrere Diagramme aus verschiedenen Spalten zu erstellen. Beispiel:

    For n = 2 To letzteSpalte
       Set Bereich = Union(Sheets(2).Columns(1), Sheets(2).Columns(n))
       Charts.Add
       ActiveChart.SetSourceData Source:=Bereich
       ' weitere Diagrammformatierungen
    Next n
  2. Datenanalyse mit Schleifen
    Mit einer Schleife über alle Zeilen kannst Du Berechnungen oder Datenanalysen durchführen:

    Dim i As Integer
    For i = 1 To Sheets(2).UsedRange.Rows.Count
       ' Werte in Spalte A analysieren
    Next i

Tipps für Profis

  • Setze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Nutze Fehlerbehandlungsroutinen (z.B. On Error Resume Next), um unvorhergesehene Probleme elegant zu handhaben.

  • Experimentiere mit verschiedenen Diagrammtypen, um die beste Visualisierung für Deine Daten zu finden.


FAQ: Häufige Fragen

1. Wie kann ich alle Zellen einer Spalte durchlaufen?
Verwende eine Schleife wie die folgende:

Dim zelle As Range
For Each zelle In Sheets(2).Columns(1).Cells
    ' Deine Logik hier
Next zelle

2. Wie incrementiere ich den Index in einer Schleife?
Der Index wird automatisch in einer For Next-Schleife erhöht. Beispiel:

For n = 2 To letzteSpalte
    ' n wird bei jedem Durchlauf um 1 erhöht
Next n

3. Kann ich mehrere Diagramme gleichzeitig erstellen?
Ja, Du kannst in einer Schleife mehrere Diagramme generieren, indem Du den Code zum Erstellen von Diagrammen in die Schleife einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige