Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ChartSpace in UserForm

ChartSpace in UserForm
18.03.2007 15:08:00
ingUR
Guten Tag!
https://www.herber.de/bbs/user/41145.xls
In der Arbeitsmappe ist ein eingebettetes Diagramm als Kerzenchart (chChartTypeStockOHLC).
Dieses Diagramm als Bild in ere Userform darzustellen bereitet keine Probleme.
Die Daten (Spalten B bis E als Y-Werte und Spalte A als Katergotie) in einem ChartSpace-Objekt anzeigen zu lassen ist für Liniencharts möglich. Jedoch hier nun ein Kerzenchart zu fabrizieren, will mir nicht gelingen.
Sind die Möglichkeiten von ChartSpace in UserFormen andere als die bei in Tabellen eingebetteten Diagramme?
Für zielführende Lösungsansätze werde ich dankbar sein.
Gruß,
Uwe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ChartSpace in UserForm
18.03.2007 15:20:03
Jan
Hi,
chChartTypeStockOHLC gibt es auch im Chartspace, findest du im Objektkatalog
wenn du die Klasse OWC auswählst unter ChartChartTypeEnum.
mfg Jan
AW: ChartSpace in UserForm & Kerzenbars
18.03.2007 19:51:26
ingUR
Hallo, Jan,
danke für Deine Antwort, jedoch meine Versuche, die ich durchgeführt habe, bevor ich meine Frage hier im Forum stellte, führten zu keinem gültigen Ergebnis, da der TypchChartTypeStockOHLC ein bestimmten Datenstruktur benötigt, der mit Einzelzuweisung, so wie ich sie vorgesehen habe, nicht (.SeriesCollection.Add.SetData chDimValues, chDataLiteral, dataYO usw.) gewährleistet zu sein scheint, denn ich weiß nicht, wie ich nach der Bereitstellung der DataY-Reihen (Seriescollection(1) bis ...(4)) den Typewechsel durchführen kann.
Die Verwenduing eines zweidimensionalen Datenfeldes, z.b. DataOHLC(maxBars, 4), kann jedoch nicht erfolgreich dem Chart(0).SeriesCollection zugewiesen werden.
Die Übernahme der Befehlsfolge, wie sie für ein in Tabellenblattdiagramm erforderlich ist, wo durchaus die Einzeldatenreihen als Linien in die Y-Sammlung übergeben werden können und anschließend der Charttyp gewechlselt werden kann, führt bei ChartSpace zu nichtunterstützen Methoden.
Ich hoffe, dass die hochgeladene Arbeitsmappe ausreichend vorbereitet ist, um die beschreibene Situationen nachvollziehen zukönnen und vielleicht Anreiz bietet, einen Lösungsweg zu finden, denn meine Aufgabenstellung kann ich bisher nicht lösen, so dass die Frage weiterhin offen ist.
Gruß,
Uwe
Anzeige
AW: ChartSpace in UserForm & Kerzenbars
18.03.2007 20:09:34
Jan
Hi,
sorry, die Mappe bringt nichts, da ich alles auf Chartspace 11 umstricken müßte.
mfg Jan
AW: UF-ChartSpace & Kerzenchart
19.03.2007 21:20:00
ingUR
Hallo,
nachdem Jan darauf verweist, dass die erste Arbeitsmappe, die ich hochgeladen habe, "nichts bringt" um als Vorlage zur Lösungsfindung dienen zu könne (Zitat Jan: ­«sorry, die Mappe bringt nichts , da ich alles auf Chartspace 11 umstricken müßte.»), starte ich einen zweiten Versuch meine Frage so darzustellen, das die Problematik nachvollzogen werden kann und ggf. Löungsansätze angegeben werden.
Hier also die neue Mappe: https://www.herber.de/bbs/user/41192.xls
Option Explicit
Private Sub UserForm_Initialize()
BuiltUFDiagramm_A 'page1
BuiltUFDiagramm_B 'page2
BindToSpreadsheet 'page3
End Sub
Private Sub BuiltUFDiagramm_A()
Dim chConstants
Dim dataX(), dataYO(), dataYH(), dataYL(), dataYC()
Dim dataYOHLC()
Dim ws As Worksheet
Dim maxr As Long
Dim r As Long, c As Integer
Dim rA As Long, cA As Integer
Dim chtChart1, asSeriesNames(3)
With Sheets("Tabelle1")
maxr = .Cells(.Rows.Count, 2).End(xlUp).Row
ReDim dataX(maxr - 2), dataYO(maxr - 2), dataYH(maxr - 2), dataYL(maxr - 2), dataYC(maxr - 2)
ReDim dataYOHLC(maxr - 2, 3)
For c = 2 To 5
cA = c - 2
For r = 2 To maxr
dataYOHLC(r - 2, cA) = .Cells(r, c)
Next r
Next c
asSeriesNames(0) = .Range("B1")
asSeriesNames(1) = .Range("C1")
asSeriesNames(2) = .Range("D1")
asSeriesNames(3) = .Range("E1")
For r = 2 To maxr
rA = r - 2
dataYO(rA) = .Cells(r, 2)
dataYH(rA) = .Cells(r, 3)
dataYL(rA) = .Cells(r, 4)
dataYC(rA) = .Cells(r, 5)
dataX(rA) = .Cells(r, 1)
Next r
End With
Set chtChart1 = ChartSpace1.Charts.Add
Set chConstants = ChartSpace1.Constants
With chtChart1
.HasTitle = True
.Title.Caption = "DAX-Index von WorkSheet-Tabelle1"
.Type = chConstants.chChartTypeLine
.SetData chConstants.chDimSeriesNames, chConstants.chDataLiteral, asSeriesNames
.SetData chConstants.chDimCategories, chConstants.chDataLiteral, dataX
.SeriesCollection(0).SetData chConstants.chDimValues, chConstants.chDataLiteral, dataYO
.SeriesCollection(1).SetData chConstants.chDimValues, chConstants.chDataLiteral, dataYH
.SeriesCollection(2).SetData chConstants.chDimValues, chConstants.chDataLiteral, dataYL
.SeriesCollection(3).SetData chConstants.chDimValues, chConstants.chDataLiteral, dataYC
'  Problembeschreibung:
'  mit den Anweisungen bisher wurden die vier Datenreihen (O H L C)
'  als Linienschart im ChartSpace1 gezeichnet
'  soll nun die Charttypenimwandlung mit nachfolgender Zeile in ein CharttypeStockOHLC
'  gewandelt werden, verschwinden die Linien
'.Type = chConstants.chChartTypeStockOHLC
End With
Set chtChart1 = Nothing
Set chConstants = Nothing
End Sub

Entscheidend ist jedesmal die hier noch als Kommentar gekennzeichnete Zeile '.Type = chConstants.chChartTypeStockOHLC
Werden die Liniencharts noch wie gewünscht dargestellt werden, werden mit dem Änderung auf den StockOHLC-ChartType (Auskommentierung aufgehoben) die Kerzenen nicht dargestellt. Was habe ich nicht verstanden?
Gruß,
Uwe
Anzeige
AW: UF-ChartSpace & Kerzenchart - gelöst
19.03.2007 22:32:21
ingUR
Zugelernt habe ich, dass beim Typ "StockOHLC" jeweils die vier Werte Ooen, High, Low und Close zum Datenpunkt der Serie(0) zusammengehören:
Private Sub BuiltUFDiagramm_A()
Dim chConstants
Dim dataX(), dataYO(), dataYH(), dataYL(), dataYC()
Dim ws As Worksheet
Dim maxr As Long
Dim r As Long, c As Integer
Dim rA As Long, cA As Integer
Dim chtChart1, asSeriesNames(3)
With Sheets("Tabelle1")
maxr = .Cells(.Rows.Count, 2).End(xlUp).Row
ReDim dataX(maxr - 2), dataYO(maxr - 2), dataYH(maxr - 2), dataYL(maxr - 2), dataYC(maxr - 2)
For r = 2 To maxr
rA = r - 2
dataYO(rA) = .Cells(r, 2)
dataYH(rA) = .Cells(r, 3)
dataYL(rA) = .Cells(r, 4)
dataYC(rA) = .Cells(r, 5)
dataX(rA) = .Cells(r, 1)
Next r
End With
Set chtChart1 = ChartSpace1.Charts.Add
Set chConstants = ChartSpace1.Constants
With ChartSpace1.Charts(0)
.Type = chConstants.chChartTypeStockOHLC
.SeriesCollection.Add
.HasTitle = True
.Title.Caption = "DAX-Index von WorkSheet-Tabelle1"
.SetData chConstants.chDimCategories, chConstants.chDataLiteral, dataX
.SeriesCollection(0).SetData chConstants.chDimOpenValues, chConstants.chDataLiteral, dataYO
.SeriesCollection(0).SetData chConstants.chDimHighValues, chConstants.chDataLiteral, dataYH
.SeriesCollection(0).SetData chConstants.chDimLowValues, chConstants.chDataLiteral, dataYL
.SeriesCollection(0).SetData chConstants.chDimCloseValues, chConstants.chDataLiteral, dataYC
End With
Set chtChart1 = Nothing
Set chConstants = Nothing
End Sub

Gruß!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige