Diagramm in UserForm anzeigen lassen!?

Hallo,

ich möchte ein Liniendiagramm in einer UserForm anzeigen lassen!

Die UserForm heißt UserForm1
Das Anzeigefeld hab ich erstmal Anzeige1 genannt

Der momentane Zielort des Liniendiagrammes ist ActiveChart.Location Where:=xlLocationAsObject

Was muss ich ändern, damit ich das Diagramm in der UserForm betrachten kann? Es sollte allerdings dynamisch bleiben, also nicht vorher als Gif abgespeichert werden…
…ist das überhaupt möglich??

Bin Newbie und hab leider gar keinen Plan davon! :frowning:

Vielen Dank schonmal!!!

LG
DerStefan

Hi Stefan,
da haste dir was relativ schwieriges rausgepickt. Nagut, ich hab dir ein beispiel gebastelt, daran kannst du ja üben.
Du brauchst im Tabellenblatt eine Schaltfläche und die Daten für das Diagramm. Ich habe den Makrocode auf den Bereich A1:B12 abgestimmt, also bastele eine Tabelle wie z.B.

 A B
1 x-werte y-werte
2 1 4
3 2 5
4 3 23
5 4 70
6 5 12
7 6 5
8 7 56
9 8 78
10 9 1
11 10 0
12 11 112

Weiterhin brauchst du in der Userform ein Spreadsheet und ein Chartspace. Du findest beide durch Rechtsklick auf Steuerelemente–zusätliche Steuerelemente.
Dort dann Microsoft Office Charts 9.0 und Microsoft Office Spreadsheets 9.0 auswählen. Beide dann in die Userform einbinden und dann in den Eigenschaften des Spreadsheets visible auf false setzen.
Zumindest sind beide in meiner Version excel2000 vorhanden.
In den Codebereich der Userform1 kommt folgendes:
Option Explicit

Private Sub ChartSpace1_DataSetChange()
End Sub

Private Sub UserForm\_Activate()
 Dim c
 Spreadsheet1.ActiveSheet.Cells.Clear
 Worksheets("Tabelle1").Range("A1:B12").Copy
 Spreadsheet1.ActiveSheet.Cells(1, 1).Paste
 Application.CutCopyMode = False
 ChartSpace1.Clear
 ChartSpace1.Charts.Add
 Set c = ChartSpace1.Constants
 ChartSpace1.Charts(0).Type = c.chChartTypeLineMarkers
 ChartSpace1.DataSource = Spreadsheet1
 ChartSpace1.Charts(0).SeriesCollection.Add
 ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimSeriesNames, 0, "B1"
 ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimCategories, 0, "A2:A12"
 ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues, 0, "B2:B12"
 ChartSpace1.Charts(0).HasLegend = True
 'ChartSpace1.Charts(0).Axes(c.chAxisPositionLeft).NumberFormat = "0%"
 'ChartSpace1.Charts(0).Axes(c.chAxisPositionLeft).MajorUnit = 0.1
End Sub

In den Codebereich von Modul1 kommt nur der Aufruf hinein:

Sub Schaltfläche1\_BeiKlick()
 UserForm1.Show
End Sub

Ich habe ein bisschen rumprobiert, scheinbar kann das Chartspace nur ein Spreadsheet als Datenquelle ab, nicht ein normales Tabellenblatt, deshalb das Spreadsheet.

Gruß
Reinhard

ich möchte ein Liniendiagramm in einer UserForm anzeigen
lassen!
Die UserForm heißt UserForm1
Das Anzeigefeld hab ich erstmal Anzeige1 genannt

Der momentane Zielort des Liniendiagrammes ist
ActiveChart.Location Where:=xlLocationAsObject

Was muss ich ändern, damit ich das Diagramm in der UserForm
betrachten kann? Es sollte allerdings dynamisch bleiben, also
nicht vorher als Gif abgespeichert werden…
…ist das überhaupt möglich??

Bin Newbie und hab leider gar keinen Plan davon! :frowning:

Vielen Dank schonmal!!!

LG
DerStefan

Miiiist zu späääät…!!! :frowning:

Sorry Reinhard, ich hab mein Problem jetzt etwas einfacher gelöst, ohne UserForm!
Als Anfänger entdeckt man halt ständig neue Wege und Möglichkeiten, das dauert nur halt immer etwas…
Hab jetzt schlechtes Gewissen weil Du dir soviel Mühe gemacht hast! :frowning:
Ich hoffe die Beschreibung kommt ins Archiv oder Jemand anderes zieht Nutzen daraus!

Trotzdem vielen vielen vielen Dank!!!

Gruß
DerStefan

Hmmm…aber vielleicht kannst mir bei einem zusammenhängenden Problem helfen, hast ja nun etwas Ahnung davon!

Ich möchte beim Tabellenbau mit Range zwei statt nur einen Range-Bereich nutzen! Also so:

Range(„D4:smiley:45,B4:B45“).Select

D4:smiley:45 stehen die Werte
B4:B45 brauche ich immer damit er mir die Beschriftung der X-Achse richtig macht…(Speicherzeiten 00:00, 00:30, 01:00 Uhr usw.)

Ich hab das aber nicht wie im Beispiel mit Makro gemacht und verwende an Stelle von D4:smiley:45 (getChartAddr(„Tabelle1“, date), da der Range-Berecih vom aktuellen Datum abhängig ist…

Dementsprechend müsste es so klappen:

Range(„getChartAddr(„Tabelle1“,date),B4:B45“).select

Kann auch sein dass es anders rum ist, jedenfalls funktioniert es nicht! :`-(

Hmm…hab schon sehr viel rumprobiert, aber ich denke die Formate vertragen sich nicht!?

Naja wie gesagt wenn es dir sofort auffällt was falsch ist kannst ja was dazu schreiben…wenn du mir nicht böse bist!

LG
DerStefan

Hi Stefan,
kein Problem, beim rumprobieren mit dem mir neuen Chartspace habe ich ja auch was gelernt weil ich in den vielen Möglichkeiten der Userforms noch hilflos rumstocher und da kommen mir so Aufgaben grad recht:smile:
Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Stefan,
„getchartaddr“ find ich nirgends?!
Ansonsten probier mal folgendes Makro:
Sub Makro3()

’ Makro3 Makro
’ Makro am 02.04.2004 von r aufgezeichnet


’ ActiveWindow.Visible = False
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(„Tabelle1“).Range(„D4:smiley:45“), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(1).XValues = „=Tabelle1!R4C2:R45C2“
ActiveChart.Location Where:=xlLocationAsObject, Name:=„Tabelle1“
End Sub
Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

vielen Dank, deine Antwort hat mich auf den richtigen Weg gebracht! :smile:
getChartAddr ist auch eine selbstgeschriebene Prozedur, wollte damit nur deutlich machen dass das Format halt nicht das typische ist („A1:B1“). Hätte ich schreiben müssen, sorry und danke nochmal!

Gruß
Stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]