Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Spalten getrennt markieren

VBA: Spalten getrennt markieren
27.06.2017 13:39:32
luflip
Hallo zusammen
ich habe folgendes Problem:
Mein Ziel ist es eine über die Leistungsüberwachung erstellte Tabelle über ein Makro _ automatisch in Diagramme auf einer neu angelegten Tabellenseite zu überführen. Dabei steht in der ersten Spalte die Uhrzeit und in den jeweils nächsten Spalten in der ersten Zeile der Titel und den Folgezeilen die Datensätze. Hierfür habe ich bis jetzt folgendes Makro formuliert:

Sub mehrere_blätter_spaltenerkennung()
' mehrere_blätter_spaltenerkennung Makro
' Tastenkombination: Strg+s
Dim neu_blatt As Worksheet
Set neu_blatt = ThisWorkbook.Worksheets.Add
neu_blatt.Name = "Diagramme"
Dim intLetzteSpalte As Integer, aktiveSpalte As Integer
intLetzteSpalte = Sheets("Datenblatt 1").Cells(1, 256).End(xlToLeft).Column
For aktiveSpalte = 2 To intLetzteSpalte
Sheets("Datenblatt 1").Select
Range(Columns(1), Columns(aktiveSpalte)).Select
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Sheets("Datenblatt 1").Range(Columns(1), Columns( _
aktiveSpalte))
ActiveChart.Parent.Name = "chart" & aktiveSpalte
ActiveChart.Location Where:=xlLocationAsObject, Name:="Diagramme"
ActiveSheet.ChartObjects("chart" & aktiveSpalte).Activate
ActiveSheet.Shapes("chart" & aktiveSpalte).IncrementLeft -531.75
ActiveSheet.Shapes("chart" & aktiveSpalte).IncrementTop -192.3749606299
Next aktiveSpalte
End Sub

Das Makro erstellt alle Diagramme und verschiebt diese auch auf das neu erstellte Tabellenblatt "Diagramme". Leider werden ab dem zweiten Diagramm mehrere Graphen im Diagramm vereint. Entsprechend sind im dritten Diagramm drei Graphen zu sehen, im vierten sind es vier usw. - wie schreibe ich das Makro nun also um, damit pro Diagramm nur eine Spalte (und somit ein Graph) zu sehen ist?
Vielen Dank
luflip

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Spalten getrennt markieren
27.06.2017 14:23:06
Matthias
HAllo! Also der Fehler sollte daran liegen, dass du bei dem SourceData immer ab Spalte 1 startest. Ungetestet würde ich die Zeile mal so abändern.
ActiveChart.SetSourceData Source:=Sheets("Datenblatt 1").Range( _
Sheets( "Datenblatt 1").Columns(aktiveSpalte), Sheets("Datenblatt 1").Columns( aktiveSpalte))
Damit sollte er immer nur die aktuelle Spalte nehmen.
VG
AW: VBA: Spalten getrennt markieren
27.06.2017 14:38:53
luflip
Hallo
danke für deinen Tipp! Zumindest die Graphen werden nun richtig angezeigt. Leider ist die Beschriftung der x-Achse nun leer und nicht mit den zeitlichen Datensätzen aus der ersten Spalte beschriftet.
Ich hab mal zur Hilfe die Datei hochgeladen: https://www.herber.de/bbs/user/114512.xlsm
Probiere schon seit einer Stunde sämtliche Variationen der Makrozeilen bezüglich der Markierung durch und komme einfach zu keiner Logik.
Viele Grüße
Anzeige
AW: VBA: Spalten getrennt markieren
27.06.2017 16:13:21
Matthias
HallO! Probiere es mal so. Damit sollte die Beschriftung der x Achse zum Diagramm an Hand Zelle 1 der Spalte eingetragen werden. Außerdem sollte die X Achse nach Spalte 1 bezeichnet werden.
VG

Sub mehrere_blätter_spaltenerkennung()
' mehrere_blätter_spaltenerkennung Makro
' Tastenkombination: Strg+s
Dim neu_blatt As Worksheet
Set neu_blatt = ThisWorkbook.Worksheets.Add
neu_blatt.name = "Diagramme"
Dim intLetzteSpalte As Integer, aktiveSpalte As Integer
intLetzteSpalte = Sheets("Datenblatt 1").Cells(1, 256).End(xlToLeft).Column
For aktiveSpalte = 2 To intLetzteSpalte
Sheets("Datenblatt 1").Select
Range(Columns(1), Columns(aktiveSpalte)).Select
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Sheets("Datenblatt 1"). Range _
(Sheets("Datenblatt 1").Columns(aktiveSpalte), Sheets("Datenblatt 1").Columns(aktiveSpalte))
ActiveChart.Parent.name = "chart" & aktiveSpalte
ActiveChart.Location Where:=xlLocationAsObject, name:="Diagramme"
ActiveSheet.ChartObjects("chart" & aktiveSpalte).Activate
ActiveSheet.Shapes("chart" & aktiveSpalte).IncentLeft -531.75
ActiveSheet.Shapes("chart" & aktiveSpalte).IncentTop -192.3749606299
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = _
Sheets("Datenblatt 1").Cells(1, aktiveSpalte)
.SeriesCollection(1).XValues = Sheets("Datenblatt 1").Columns(aktiveSpalte)
End With
Next aktiveSpalte
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige