Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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

Diagramm in Userform mit den letzten x Datenpunkte

Diagramm in Userform mit den letzten x Datenpunkte
13.06.2018 16:41:46
André
Hallo zusammen,
ich bin ein Neuling in VBA Programmierung und stehe im Moment vor einem Problem,
dass ich bisher nicht lösen konnte. Ich würde mich sehr freuen, wenn mir hier jemand weiterhelfen würde.
Es geht um eine Tabelle mit Messwerten, die ständig erweitert wird. Jetzt möchte ich, dass auf der UserForm bei jeder neuen Messwerteingabe in einem Frame ein entsprechend aktualisiertes Diagramm angezeigt wird. Das Diagramm soll hierbei lediglich die letzten 35 Messungen anzeigen!
Für das Diagramm wird das Datum (Spalte A) und der Meßwert (Spalte C) verwendet.
Im Folgenden sehr ihr meinen aktuellen Stand:
Private Sub Frame3_Click()                       'RAHMEN-Darstellung Diagramm
Dim MyChart As Chart                             'Deklaration MyChart als Chart / Diagramm
Dim ChartData_1 As Range                         'Deklaration Chartdata als Bereich der C  _
Spalte
Dim ChartName As String                          'Deklaration ChartName als Text
Dim XValues As Date                              'Deklaration der X Werte als Datum
'Chloridwerte in Spalte C
Set ChartData_1 = Sheets("Data").Range("C3:C38")
Application.ScreenUpdating = False
Set MyChart = Sheets("Data").Shapes.AddChart(xlLine).Chart               'Diagramm soll  _
Liniendiagramm sein
'Zuordnung der darzustellenden Daten
'Serie 1: Chloridwerte aus Spalte C d.h. ChartData_1
MyChart.SeriesCollection.NewSeries                                   'Diagramm bekommt  _
Serie 1 zugewiesen
MyChart.SeriesCollection(1).Name = ChartName
MyChart.SeriesCollection(1).Values = ChartData_1                     'Werte der Serie 1 =  _
ChartData_1
MyChart.SeriesCollection(1).XValues = Sheets("Data").Range("A3:A38")  'Die zu Serie 1 gehö _
rigen X-Werte
MyChart.SeriesCollection(1).Select                                   'Seie 1 wird ausgewä _
hlt
Selection.Border.ColorIndex = 3                                      'Linienfarbe rot(=3)  _
zugewiesen
'Weitere Diagrammformatierung
With MyChart.ChartArea                                'Chartgrösse
.Height = 290
.Width = 550
.Left = 0
.Top = -50
End With
With MyChart.ChartArea                                'Hintergrundfarbe
.Format.Fill.ForeColor.RGB = RGB(188, 188, 188)
End With
MyChart.ChartArea.Format.TextFrame2.TextRange.Font.Size = 5                 'Größe der  _
achsbeschriftung
MyChart.Legend.Select                                                       'Löscht Legende
Selection.Delete                                                            'Löscht Legende
Dim imageName As String
imageName = Application.DefaultFilePath & Application.PathSeparator & "TempChart.gif"
MyChart.Export Filename:=imageName
Sheets("Data").ChartObjects(1).Delete
Application.ScreenUpdating = True
UserForm2.Frame3.Picture = LoadPicture(imageName)
End Sub

Vielen Dank für eure Hilfe!
André

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Und wo ist das Peoblem? - o.w.T.
14.06.2018 10:48:37
Beverly


AW: Und wo ist das Peoblem? - o.w.T.
14.06.2018 13:40:40
André
Hallo Beverly,
der o.g. Code funktioniert einfach nicht. Es wird kein Diagramm angezeigt. Im Moment bin ich soweit,
das auf der UserForm das Diagramm angezeigt wird. Problem jedoch weiterhin: Wenn ich neue Meßwerte und Datum in den Spalten A (Datum) und C (Meßßwert), wird das Diagramm nicht aktualisiert, so dass die letzten 35 Werte angezeigt werden. Hier der Code:
Private Sub Frame3_Click()                       'RAHMEN-Darstellung Diagramm
Dim MyChart As Chart                             'Deklaration MyChart als Chart / Diagramm
Dim ChartData_1 As Range                         'Deklaration Chartdata als Bereich der C  _
Spalte
Dim ChartData_2 As Range                         'Deklaration der D-Spalte(grenze)
Dim ChartData_3 As Range                         'Deklaration der D-Spalte(grenze)
Dim ChartName As String                          'Deklaration ChartName als Text
Dim XValues As Date                              'Deklaration der X Werte als Datum
'Chloridwerte in Spalte C
Set ChartData_1 = Sheets("Data").Range("C3:C38")
'Untere TG in Spalte D
Set ChartData_2 = Sheets("Data").Range("D3:D38")
'Obere TG in Spalte E
Set ChartData_3 = Sheets("Data").Range("E3:E38")
Application.ScreenUpdating = False
Set MyChart = Sheets("Data").Shapes.AddChart(xlLine).Chart               'Diagramm soll  _
Liniendiagramm sein
'Zuordnung der darzustellenden Daten
'Serie 1: Chloridwerte aus Spalte C d.h. ChartData_1
MyChart.SeriesCollection.NewSeries                                   'Diagramm bekommt  _
Serie 1 zugewiesen
MyChart.SeriesCollection(1).Name = ChartName
MyChart.SeriesCollection(1).Values = ChartData_1                     'Werte der Serie 1 =  _
ChartData_1
MyChart.SeriesCollection(1).XValues = Sheets("Data").Range("A3:A38")  'Die zu Serie 1 gehö _
rigen X-Werte
MyChart.SeriesCollection(1).Select                                   'Seie 1 wird ausgewä _
hlt
Selection.Border.ColorIndex = 3                                      'Linienfarbe rot(=3)  _
zugewiesen
'Serie 2: untere TG Werte aus Spalte D d.h. ChartData_2
MyChart.SeriesCollection.NewSeries
MyChart.SeriesCollection(2).Values = ChartData_2
MyChart.SeriesCollection(2).XValues = Sheets("Data").Range("A3:A38")
MyChart.SeriesCollection(2).Select
Selection.Border.ColorIndex = 5                                      'Linienfarbe blau (=5)
Selection.Border.LineStyle = xlDot                                   'Linie wird  _
gestrichelt
'Serie 3: obere TG Werte aus Spalte E d.h. ChartData_3
MyChart.SeriesCollection.NewSeries
MyChart.SeriesCollection(3).Values = ChartData_3
MyChart.SeriesCollection(3).XValues = Sheets("Data").Range("A3:A38")
MyChart.SeriesCollection(3).Select
Selection.Border.ColorIndex = 5
Selection.Border.LineStyle = xlDot
'Weitere Diagrammformatierung
With MyChart.ChartArea                                'Chartgrösse
.Height = 290
.Width = 550
.Left = 0
.Top = -50
End With
With MyChart.ChartArea                                'Hintergrundfarbe
.Format.Fill.ForeColor.RGB = RGB(188, 188, 188)
End With
With MyChart.SeriesCollection(2).MarkerBackgroundColorIndex = 3
End With
MyChart.ChartArea.Format.TextFrame2.TextRange.Font.Size = 5                 'Größe der  _
achsbeschriftung
MyChart.Legend.Select                                                       'Löscht Legende
Selection.Delete                                                            'Löscht Legende
Dim imageName As String
imageName = Application.DefaultFilePath & Application.PathSeparator & "TempChart.gif"
MyChart.Export Filename:=imageName
Sheets("Data").ChartObjects(1).Delete
Application.ScreenUpdating = True
UserForm2.Frame3.Picture = LoadPicture(imageName)
End Sub

Kannst du mir da bitte weiterhelfen?
LG,
André
Anzeige
AW: Und wo ist das Peoblem? - o.w.T.
14.06.2018 15:24:04
André
Hallo Beverly,
der Datenbereich des Diagramms soll praktisch bei jeder neuen Werteingabe "mitwandern"!
Der Bereich sollte dabei 35 Messwerte darstellen. Ich habe da ein Beispiel auf deiner (wirklich gut gemachten) VBA Seite gesehen, ich bekomme das aber nicht für mein aktuelles Beispiel hin :-(
Bitte Beispielmappe hochladen
14.06.2018 15:55:06
Beverly
Hi André,
weshalb musst du überhaupt das Diagramm immer neu erstellen? Es würde doch ein per dynamischem Namen generiertes Diagramm ausreichen - wie man solche dynamischen Diagramme erstellt, dazu findest du ebenfalls Beispiele auf meiner HP: Arbeitsmappe Dynamisches Diagramm1, Seite Diagramme.


Anzeige
AW: Bitte Beispielmappe hochladen
19.06.2018 06:14:58
Andre
Hallo Beverly,
vielen Dank für den Tip mit dem dynamischen Diagramm! Das ist genau das, wonach ich gesucht hatte :-)! Ich kannte leider nicht den Ausdruck "dynamisches Diagramm". Ich werde jetzt einmal versuchen dein genanntes Beispiel auf meine Anwendung zu übertragen.
Nochmals vielen Dank!
dynamisches Diagramm modifizieren
20.06.2018 12:27:55
André
Hallo Beverly,
deine Empfehlung mit dem dynamischen Diagramm aus deinen Beispielen(letzte_10)funktioniert!
ich habe dennoch ein paar Fragen, um ein Diagramm zu modifizieren. Im einzelnen möchte ich noch folgendes erreichen:
(a) den Wertebereich von 10 auf 24 erweitern
(b) zwei weitere Datenreihen in das Diagramm aufnehmen. Diese beiden Reihen haben konstante Werte und geben im Diagramm nur eine obere- und eine untere Toleranzgrenze an.
Hast du da noch eine Idee, bzw. könntest du mir bitte kurz erklären, wie das funktioniert?
Vielen Dank & viele Grüße,
André
Anzeige
AW: dynamisches Diagramm modifizieren
20.06.2018 13:49:00
Beverly
Hi André,
(a) anstelle 9 in der Formel 23 verwenden
(b) erstelle 2 neue Datenreihen und definiere zwei Namen nach diesen Prinzip (bezogen auf das Beispiel "letzte_10"): =X_letzte10/X_letzte10*111,5 wobei 111,5 die Toleranzgröße ist.


AW: dynamisches Diagramm modifizieren
20.06.2018 16:53:47
André
Hi Beverly,
ich habe die Modifikation nach einigem Basteln selbst hinbekommen. Jetzt bräuchte ich nur nochmal deine Hilfestellung, um das Diagramm vom Tabellenblatt in einer UserForm zu zeigen.
LG,
André
Diagramm im UserForm anzeigen
20.06.2018 17:22:39
Beverly
Hi André,
diesen Code hast du doch bereits.


Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige