Herbers Excel-Forum - das Archiv

VBA / Excel: Spalten in Schleife durchlaufen

Bild

Betrifft: VBA / Excel: Spalten in Schleife durchlaufen
von: scarvy

Geschrieben am: 12.12.2006 16:05:14
Ä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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: Matthias G
Geschrieben am: 12.12.2006 16:10:53
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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: scarvy

Geschrieben am: 12.12.2006 16:23:21
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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: Reinhard

Geschrieben am: 12.12.2006 16:14:49
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..
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: scarvy
Geschrieben am: 12.12.2006 16:28:39
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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: scarvy

Geschrieben am: 13.12.2006 12:18:51
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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: Reinhard

Geschrieben am: 13.12.2006 12:44:55
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
Bild

Betrifft: AW: VBA / Excel: Spalten in Schleife durchlaufen
von: Matthias G

Geschrieben am: 13.12.2006 13:00:59
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
 Bild
Excel-Beispiele zum Thema "VBA / Excel: Spalten in Schleife durchlaufen"
Vorkommen von Zahlenreihen in Spalten Funktion ANZAHL2 ohne ausgeblendete Spalten
Spaltenbreite anpassen Spalten einer Mehrbereichsauswahl ausblenden.
Spaltennamen bestimmen Spalten/Zeilen aus- und einblenden
Zeilen und Spalten über ein Drehfeld ein- und ausblenden In einem Dialog ausgewählte Spalten drucken
Spalten bedingt summieren und Zellen formatieren Abfrage der markierten Spalten