Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1656to1660
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

Diagramme mit VBA - Spaltenauswahl

Diagramme mit VBA - Spaltenauswahl
20.11.2018 14:07:00
Andreas
Hallo,
da mich meine Onlinerecherche gerade irgendwie nicht weiter bringt, wollte ich hier mal um Rat bei meinem Problem bitten. Es geht darum, Messwerte aus einer ExcelTabelle per VBA Makro in ein standardisiertes Diagramm zu überführen.
Die Anzahl der Messwerte schwankt dabei, weshalb ich gerade vor einem kleinen Problem stehe, da die Ausgabe des Diagramms zwar funktioniert so lange ich feste Bereiche der Messwerttabelle definiere, aber nicht mehr mit ganzen Spalten...
Hier mal der Code bisher

Sub makediag()
ThisWorkbook.Charts.Add Before:=Worksheets("Measured Values")
Dim element As Chart
For Each element In ThisWorkbook.Charts
If element.Name = "Tensile test evaluation" Then
element.Delete
End If
Next
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Sheets("Measured Values").Columns("B")
.SeriesCollection(1).XValues = _
Worksheets("Measured Values").Range("C2",
ActiveSheet.Range("C2").End(xlDown))
.Name = "Tensile test evaluation"
End With
End Sub
primär geht es dabei um den Abschnitt:

With ActiveChart
.SeriesCollection(1).XValues = _
Worksheets("Measured Values").Range("C2",
ActiveSheet.Range("C2").End(xlDown))

Es sollten alle Werte der Spalte C als Werte der X-Achse definiert sein,
nur halt ohne den Spaltentitel...
Vielen Dank für die Hilfe
Andreas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramme mit VBA - Spaltenauswahl
20.11.2018 14:58:28
Rainer
Hallo Andreas,
lade doch die Mappe mal hoch, mit 2 verschiedenen Datenreihen als Beispiel.
Dann muss man nichts nachbauen.
Gruß,
Rainer
AW: Diagramme mit VBA - Spaltenauswahl
22.11.2018 19:03:42
Rainer
Hallo Andreas,

Option Explicit
Sub makediag()
ThisWorkbook.Charts.Add Before:=Worksheets("Measured Values")               'Diagramm  _
hinzufügen
Dim element As Chart                                                        'Variable für  _
Diagramme definieren
Dim EndeDerDatenreihe As Long
For Each element In ThisWorkbook.Charts                                     'Diagramm lö _
schen falls es schon existiert
If element.Name = "Tensile test evaluation" Then
element.Delete
End If
Next
    EndeDerDatenreihe = WorksheetFunction.CountA(Worksheets("Measured Values").Range("C:C"))
With ActiveChart
.ChartType = xlLine                                                     'Diagrammtyp  _
definieren
.SetSourceData Source:=Sheets("Measured Values").Columns("B")           'Arbeitsblatt  _
und Spalten definieren
.SeriesCollection(1).XValues = _
Worksheets("Measured Values").Range("C2", "C" & EndeDerDatenreihe)
.Name = "Tensile test evaluation"                                       'Diagrammblatt  _
benennen
.HasTitle = True                                                        'Diagrammtitel  _
einfügen
'.HasLegend = True                                                      'Legende hinzufü _
gen
'.SeriesCollection(1).Name = "Stress"                                   'Datenreihe  _
benennen
'.SeriesCollection(2).Name = "Strain"                                   'Datenreihe  _
benennen
End With
With ActiveChart.ChartTitle                                                 'Diagrammtitel  _
formatieren
.Characters.Text = "Tensile test evaluation"                            'Diagrammtitel  _
definieren
.Characters.Font.Name = "Arial"                                         'Schriftart
.Characters.Font.Color = RGB(0, 0, 0)                                   'Schriftfarbe
.Characters.Font.Size = 11                                              'Schriftgröße
.Characters.Font.Bold = False                                           'nicht Fett
End With
End Sub

Anzeige
AW: Diagramme mit VBA - Spaltenauswahl
22.11.2018 23:05:52
Rainer
Hier der Code nochmal ohne Kommentare und Formatierung, da hatte es was vermurkst beim Absenden.
Option Explicit
Sub makediag()
ThisWorkbook.Charts.Add Before:=Worksheets("Measured Values")
Dim element As Chart
Dim EndeDerDatenreihe As Long
For Each element In ThisWorkbook.Charts
If element.Name = "Tensile test evaluation" Then
element.Delete
End If
Next
EndeDerDatenreihe = WorksheetFunction.CountA(Worksheets("Measured Values").Range("C:C"))
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Sheets("Measured Values").Columns("B")
.SeriesCollection(1).XValues = _
Worksheets("Measured Values").Range("C2", "C" & EndeDerDatenreihe)
.Name = "Tensile test evaluation"
.HasTitle = True
'.HasLegend = True
'.SeriesCollection(1).Name = "Stress"
'.SeriesCollection(2).Name = "Strain"
End With
With ActiveChart.ChartTitle
.Characters.Text = "Tensile test evaluation"
.Characters.Font.Name = "Arial"
.Characters.Font.Color = RGB(0, 0, 0)
.Characters.Font.Size = 11
.Characters.Font.Bold = False
End With
End Sub

Anzeige
AW: Diagramme mit VBA - Spaltenauswahl
23.11.2018 09:00:51
Andreas
Vielen Dank Rainer,
das klappt jetzt :D auch wenn ich nicht so ganz verstehe warum es vorher nicht ging...
Im Prinzip macht der neue Ausdruck ja genau das Gleiche?!
Gruß
Andreas
AW: Diagramme mit VBA - Spaltenauswahl
23.11.2018 11:01:07
Rainer
Hallo Andreas,
in diesem Falle ja, das Resultat ist das gleiche.
Du kannst auch die andere Formel nehmen um "EndeDerDatenreihe" zu ermitteln.
Das Problem war, wie bereits erklärt, dass du das Worksheet nicht definiert hattest.
Da musst du in Zukunft auch aufpassen, dass es Sheets und Worksheets gibt. Beides ist aber nicht das gleiche.
Deine Mappe hat 1 Worksheet und 1 Chart, also im ganzen 2 Sheets.
Gruß,
Rainer
Anzeige
Unklare Fragestellung
20.11.2018 15:17:35
Beverly
Hi Andreas,
in welcher Zelle steht denn der "Spaltentitel" und was verstehst du überhaupt unter "Spaltentitel"?
Der Codeteil
 = Worksheets("Measured Values").Range("C2",
ActiveSheet.Range("C2").End(xlDown))
gibt doch an, dass der Bereich aus Spalte C ab Zeile 2 bis zur letzten belegten Zeile genommen werden soll. Wenn es eine andere Start-Zelle sein soll, dann musst du das im Code einfach nur anpassen.


AW: Unklare Fragestellung
22.11.2018 16:12:31
Andreas
Hallo Karin/Beverly,
der Spaltentitel steht in der obersten Zelle einer Spalte, in meinem Fall 'Stress' und 'Strain'
in B1 und C1.
Dass der Codeteil das angibt war auch meine Hoffnung als ich ihn eingefügt habe,
aber beim Ausführen des Makros zeigt er mir dort immer einen Fehler...
Ich kann das Dokument ja gerne auch hier nochmal anheften:
https://www.herber.de/bbs/user/125585.xlsm
Wenn ich die Definition auf die ganze Spalte änder funktioniert das Makro zwar,
aber dann packt er mir 'Strain' mit auf die X-Achse... und das ist ja nicht Sinn und Zweck der Sache...
Anzeige
Du beinfest dich im Diagrammblatt...
22.11.2018 17:50:17
Beverly
Hi Andreas,
..., deshalb kannst du in der o.g. Code-Zeile nicht ActiveSheet verwenden sondern musst dich auf das Tabellenblatt mit den Daten beziehen:
= Worksheets("Measured Values").Range("C2", Worksheets("Measured Values").Range("C2").End(xlDown)) 


AW: Du beinfest dich im Diagrammblatt...
23.11.2018 09:05:04
Andreas
Hallo Karin,
danke für die Aufklärung ;)
Ich hab erst vor ein paar Tagen mit VBA angefangen und dachte, dass das Worksheet auch das ActiveSheet wäre, also lieber immer genau verweisen... merk ich mir ;)
Danke nochmal für die Hilfe es funktioniert jetzt alles wie es soll!
Gruß
Andreas
Anzeige
AW: Unklare Fragestellung
22.11.2018 16:22:17
Andreas
falls die Frage noch aufkommen sollte, welcher Fehler bei mir angezeigt wird:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige