Avatar billede gskairo Nybegynder
24. januar 2008 - 12:01 Der er 9 kommentarer og
1 løsning

VBA. flere serie i samme gra ud fra en variable

Kan man lave flere grafer når man feks ved at der er 4 tilfælde af en ing? Jeg kan kun få excell til at lave en ny graf for hver tilfælde. de skulle gerne komme  isamme graf.

Jeg skriver i VBA

Min kode ser sådanne ud

Sub AddChartObject()
' Laver en graf ud fra de indtastede Biler og Fører variabler
Dim fra1 As Integer
Dim fra2 As Integer
Dim til1 As Integer
Dim til2 As Integer

fra1 = 2 ' Række skal hentes fra variabler  når der er lavet en afrundings variabel
fra2 = 3 ' kolonne
til1 = 23 ' række
til2 = 3 ' kolonne
lop = 3

    For taller = 0 To lop - 1
        With ActiveSheet.ChartObjects.Add _
                (Left:=100, Width:=375, Top:=75, Height:=225) ' Definere størelsen på grafen
            .Chart.SetSourceData Source:=Sheets("pumpe5").Range(Cells(fra1, fra2), Cells(til1, til2))
            '.Chart.SetSourceData Source:=Sheets("pumpe5").Range(Cells(2, 4), Cells(23, 4))
            .Chart.ChartType = xlXYScatterLines
            fra2 = fra2 + 1
            til2 = til2 + 1
       
        End With
    Next taller

End Sub
Avatar billede gskairo Nybegynder
24. januar 2008 - 14:29 #1
Fejlen ligger delvist i at jeg ikke fik peget på mit dokument....  Det er nu rettet-
MEN der er stadig dette:
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(2).XValues = _
        WS.Range(WS.Cells(fra1, fra2), WS.Cells(til1, til2))
        ActiveChart.SeriesCollection(2).Values = _
        WS.Range(WS.Cells(fra1, fra2), WS.Cells(til1, til2))

SeriesCollection(2) kan jeg ikke ændre i :-( Jeg ville gerne tælle op fra 1 til x afhængigt af indputtet. Men jeg kan ikke få funktionene til at tage imod en variabel. Er der nogen der har en god ide?
Avatar billede supertekst Ekspert
24. januar 2008 - 14:43 #2
Prøv at vise hele koden - som den ser ud nu.
Avatar billede gskairo Nybegynder
24. januar 2008 - 14:52 #3
Sub RecordGraf()
'
' recordGraf Macro
' Macro recorded 24-01-2008 by Gert Sørensen
'
Dim fra1 As Integer
Dim fra2 As Integer
Dim til1 As Integer
Dim til2 As Integer
Dim WS As Worksheet

fra1 = 2 ' Række skal hentes fra variabler  når der er lavet en afrundings variabel
fra2 = 2 ' kolonne
fra3 = 2
fra4 = 2
til1 = 21 ' række
til2 = 2 ' kolonne
til3 = 21
til4 = 2

lop = 2 ' laver 1 serie mere end der skal bruges.

    Charts.Add
    ActiveChart.ChartType = xlXYScatterSmooth
  '  ActiveChart.SetSourceData Source:=Sheets("pumpe5").Range("A1:Z121"), PlotBy _
        :=xlColumns

    Set WS = Worksheets("pumpe5")

    For taller = 0 To lop - 1
   
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(2).XValues = _
        WS.Range(WS.Cells(fra1, fra2), WS.Cells(til1, til2))
        ActiveChart.SeriesCollection(2).Values = _
        WS.Range(WS.Cells(fra3, fra4), WS.Cells(til3, til4))
       
      ' ActiveChart.SeriesCollection(1).XValues = "=pumpe5!R2C3:R21C3"
        'ActiveChart.SeriesCollection(1).Values = "=pumpe5!R2C4:R21C4"
        fra2 = fra2 + 1
        til2 = til2 + 1
        fra4 = fra4 + 1
        til4 = til4 + 1
       
      ' ActiveChart.SeriesCollection.NewSeries
    Next taller
           
    ActiveChart.Location Where:=xlLocationAsObject, Name:="pumpe5"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "op"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "hey"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "med dig"
    End With
    ActiveChart.HasLegend = True
End Sub

ja kønt er det ikke ;)
Avatar billede bak Seniormester
24. januar 2008 - 22:29 #4
prøv lige den her.
Opretter en ny serie ved hvert loop
Avatar billede bak Seniormester
24. januar 2008 - 22:29 #5
og så lige koden :-)

Sub RecordGraf()
'
' recordGraf Macro
' Macro recorded 24-01-2008 by Gert Sørensen
'
    Dim fra1 As Integer
    Dim fra2 As Integer
    Dim til1 As Integer
    Dim til2 As Integer
    Dim WS As Worksheet
    Dim diaFrame As ChartObject
    Dim diaChart As Chart

    Dim MySerie As Series

    fra1 = 2    ' Række skal hentes fra variabler  når der er lavet en afrundings variabel
    fra2 = 2    ' kolonne
    fra3 = 2
    fra4 = 2
    til1 = 21    ' række
    til2 = 2    ' kolonne
    til3 = 21
    til4 = 2

    lop = 2    ' laver 1 serie mere end der skal bruges.

    Set diaFrame = ActiveSheet.ChartObjects.Add(100, 50, 600, 200)
    Set diaChart = diaFrame.Chart
    diaChart.ChartType = xlXYScatterSmooth
    Set WS = Worksheets("pumpe5")

    For taller = 0 To lop - 1

        Set MySerie = diaChart.SeriesCollection.NewSeries
        MySerie.XValues = WS.Range(WS.Cells(fra1, fra2), WS.Cells(til1, til2))
        MySerie.Values = WS.Range(WS.Cells(fra3, fra4), WS.Cells(til3, til4))

        fra2 = fra2 + 1
        til2 = til2 + 1
        fra4 = fra4 + 1
        til4 = til4 + 1
    Next taller

    With diaChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "op"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "hey"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "med dig"
        .HasLegend = True
    End With

End Sub
Avatar billede excelent Ekspert
25. januar 2008 - 09:31 #6
Det var ellers noget af en slapper du har taget bak
rart at høre fra dig igen. :-)
Avatar billede bak Seniormester
25. januar 2008 - 09:32 #7
i lige måde. Nu får vi se om jeg er helt rusten :-)
Avatar billede gskairo Nybegynder
28. januar 2008 - 09:43 #8
Med lidt modifikation virker din kode som var den skrevet til formålet bak ;-)

Takker :-)
Avatar billede bak Seniormester
28. januar 2008 - 12:08 #9
velbekomme
Avatar billede bak Seniormester
06. februar 2008 - 19:45 #10
lukker du den så lige ? :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester