Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

X-Achse innerhalb eines OWC10.Objektes

Betrifft: X-Achse innerhalb eines OWC10.Objektes von: Marc
Geschrieben am: 12.08.2008 13:39:59

Guten Tag zusammen ..

da der Topic etwas limitiert ist werde ich hier versuchen mein Problem einwenig zu verdeutlichen .. folgendes stellt sich mir dar

ich versuche eine Unmenge an Daten mittels eines OWC10.Objektes innerhalb einer Userform garphisch darzustellen. Dabei werden die minutenweise generierten Werte und die dazugehörige Zeit in zwei frei dimensionierte Arrays geschrieben. Wählt man nun mittels verschiedener DTPicker einen Zeitrahmen aus, dann sollten die Werte in die y-Achse wandern und der Zeitrahmen auf der x-Achse dargestellt werden.

Soweit, sogut .. mit den y-Werten ist das alles kein Problem, aber wenn er den Graph erstellt, dann sind keine Zeitangaben vorhanden, sondern nur die Adressierung des Zeitwertes innerhalb des Arrays, sprich wenn 12:00:00 in dem Array die Adressierung Zeiten(10) hat wird auch nur die 10 in der x-Achse eingetragen.

Sehr verwirrend das Ganze, aber vielleicht habt ja ihr eine Idee

Codeauszug:



Call DTPickerZeitVarianten

        For k = 1 To UBound(ParaAuswahlList.Auswahl, 2)
            tmpDaten = GetParameterAuswahl(ParaAuswahlList, g, k)
                
                ReDim Preserve xValues(k)
                    xValues(k) = tmpDaten.UhrZeit & ":00"
                ReDim Preserve yValues(k)
                    yValues(k) = tmpDaten.wert
                ReDim Preserve dValues(k)
                    dValues(k) = tmpDaten.Datum
        Next k
        Point = 1
        For q = 1 To UBound(Zeiten)
            For x = Point To UBound(xValues)
                    If Zeiten(q) = xValues(x) Then
                        ReDim Preserve Werte(q)
                        ReDim Preserve Datum(q)
                            Datum(q) = dValues(x)
                            dMerken = dValues(x)
                            Werte(q) = yValues(x)
                            ersterWert = yValues(x)
                            ersterWert = StrReplace(ersterWert, ".", ",")
                            If x = UBound(xValues) Then
                                Exit For
                            Else
                                zweiterWert = yValues(x + 1)
                                zweiterWert = StrReplace(zweiterWert, ".", ",")
                                Mittelwert = CDbl(zweiterWert / 2) + CDbl(ersterWert / 2)
                                Mittelwert = StrReplace(Mittelwert, ",", ".")
                            End If
                            x = x + 1
                            Point = x
                            Exit For
                    Else
                        ReDim Preserve Werte(q)
                        ReDim Preserve Datum(q)
                            If ParaTyp < 7 Or ParaTyp = 9 Then
                                Werte(q) = Mittelwert
                                Datum(q) = dMerken
                                Point = x
                                Exit For
                            End If
                            If ParaTyp = 7 Or ParaTyp = 8 Then
                                Werte(q) = "0"
                                Datum(q) = dValues(x)
                                Point = x
                                Exit For
                            End If
                    End If
            Next x
        Next q
        
        If g = 0 Then
            With frmcharts.ListView1
                .View = lvwReport
                .FullRowSelect = True
                .ColumnHeaders.Add , , "Datum", 60
                .ColumnHeaders.Add , , "Zeit", 60
                .ColumnHeaders.Add , , ParaName, 110
                    For i = 1 To UBound(Zeiten)
                        .ListItems.Add , , Datum(i)
                        .ListItems(i).SubItems(1) = Zeiten(i)
                        .ListItems(i).SubItems(2) = Werte(i)
                    Next i
            End With
        Else
            With frmcharts.ListView1
                .ColumnHeaders.Add , , ParaName, 110
                    For i = 1 To UBound(Zeiten)
                        .ListItems(i).SubItems(g + 2) = Werte(i)
                   Next i
            End With
        End If
        
    
    ReDim Preserve oSeries(g)
    
    Set chConstants = frmcharts.ChartSpace1.Constants
    Set oSeries(g) = frmcharts.ChartSpace1.Charts(0).SeriesCollection.Add
    
    With chartSpace
        .Type = chChartTypeLine
        .Axes(chAxisPositionLeft).Scaling.Minimum = 0
        Select Case g
            Case Is = 0
            ScaleMaxMerken = ScaleMax
                .Axes(chAxisPositionLeft).Scaling.Maximum = ScaleMaxMerken
            Case Is > 0
                If ScaleMax < ScaleMaxMerken Then
                    .Axes(chAxisPositionLeft).Scaling.Maximum = ScaleMaxMerken
                Else
                    .Axes(chAxisPositionLeft).Scaling.Maximum = ScaleMax
                End If
        End Select
        
                .Axes(chAxisPositionBottom).MajorUnit = 50 
                .Axes(chAxisPositionBottom).MinorUnit = 50 
        .HasLegend = True
        .Legend.Position = chLegendPositionRight
    End With
    With oSeries(g)
        frmcharts.lstParaGraph.AddItem ParaName
    
        .Caption = ParaName & " in " & ParaEinheit
    
        If g = 0 Then .SetData chDimValues, chDataLiteral, Zeiten
        If g > 0 Then .SetData chDimValues, chDataLiteral, Zeiten
        .SetData chDimValues, chDataLiteral, Werte
        
        If ParaTyp = 7 Or ParaTyp = 8 Then .Type = chChartTypeColumnClustered
        If ParaTyp < 7 Or ParaTyp = 9 Then .Type = chChartTypeLine
        
    End With
        ReDim yValues(0)



vielen Dank im voraus, denn ich bin einwenig überfragt

Gruß Marc

  

Betrifft: AW: X-Achse innerhalb eines OWC10.Objektes von: Lothar
Geschrieben am: 15.08.2008 18:09:23

Hi,

die OWC-Charts bieten weitaus weniger Formatirungsmöglichkeiten als
die excel-Chart, vermutlich liegt es daran, dass das gewünschte Format nicht
unterstützt wird.

mfg Lothar


  

Betrifft: AW: X-Achse innerhalb eines OWC10.Objektes von: Marc
Geschrieben am: 17.08.2008 11:45:47

Hi,

da sprichst du wahre Worte.

Den Fehler habe ich aber beheben können in dem ich die X-Achsen Werte in Categories eingeteilt habe:


code:
anstatt --> If g = 0 Then .SetData chDimValues, chDataLiteral, Zeiten
If g = 0 Then .SetData chDimCategories, chDataLiteral, Zeiten



Nun wurden die Zeiten korrekt eingetragen. Nach dem auftragen von einem Tag wiederholten sich zwar die Werte der X-Achse und es entstand ein erneutes Problem, aber auch das war, in dem ich den Tag mit eingebunden hatte, simpel zu beheben.

schönen Sonntag noch

Gruß

Marc