passie1986
Gebruiker
- Lid geworden
- 8 mei 2008
- Berichten
- 5
Excel: waarden sorteren en grafieken maken
hallo allemaal,
Ik ben voor het eerst bezig met VBA om een macro te schrijven voor excel ik heb tot nu toe de volgende code. Op die een of andere manier wil het niet werken en krijg ik de foutmelding bij de assen van de grafiek. Ik krijg dan de foutmelding:
Fout 1004 tijdens uitvoering:
Eigenschap XValues van klasse Series kan niet worden ingesteld.
De code van de macro is alsvolgt:
Dim Laatsteregel As Integer
Dim Kolom As Integer
Dim Reeksnr As Integer
Dim Aantalkolom As Integer
Dim Naam As Integer
Sheets("blad6").Select
For I = 4 To 253 Step 3 'met deze loop worden alle belastingen gesorteerd van Hoog naar laag
Cells(3, I).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Cells(3, I), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next I
Laatsteregel = Range("Blad6!A1").SpecialCells(xlCellTypeLastCell).Row
Kolom = 4
Reeksnr = 1
Aantalkolom = 4
Naam = 2
For A = 1 To 85 'met deze loop wordt bepaald hoeveel kabels er in het excelbestand staan
If (Cells(3, Aantalkolom).Value = "") Then
Exit For
End If
Aantalkolom = Aantalkolom + 3
Next A
For J = 1 To 85 'hier worden de grafieken gemaakt 5 kabels per grafiek
If Kolom = Aantalkolom Then
Exit For
End If
If Reeksnr > 5 Or J = 1 Then
Charts.Add
ActiveChart.ChartType = xlLine
If J > 1 Then
ActiveChart.SeriesCollection.NewSeries
End If
ActiveChart.SeriesCollection(1).XValues = _
Range(Sheets("blad6").Cells(3, 1), Sheets("blad6").Cells(Laatsteregel, 1))
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabelSpacing = (Laatsteregel / 10)
.TickMarkSpacing = (Laatsteregel / 20)
.TickLabels.NumberFormat = "0"
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Kabel Belasting"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Periode (%)"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Belasting (%)"
End With
Reeksnr = 1
Else
ActiveChart.SeriesCollection.NewSeries
End If
ActiveChart.SeriesCollection(Reeksnr).Values = _
Range(Sheets("blad6").Cells(3, Kolom), Sheets("blad6").Cells(Laatsteregel, Kolom))
ActiveChart.SeriesCollection(Reeksnr).Name = Sheets("blad6").Cells(1, Naam)
Kolom = Kolom + 3
Naam = Naam + 3
Reeksnr = Reeksnr + 1
Next J
kabelnummer = Application.InputBox("geef het kabelnummer van de kabel ")
Kabelnaam = kabelnummer & " 3 fasen"
Snaam = 2
For A = 1 To 85 ' bepalen van de kabel
If (Worksheets("blad6").Cells(1, Snaam).Value = Kabelnaam) Then
Exit For
End If
Snaam = Snaam + 3
Next A
Charts.Add ' maken van de grafiek met de stroom
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = _
Range(Sheets("blad5").Cells(3, 1), Sheets("blad5").Cells(Laatsteregel, 1))
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Stroom "
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Datum"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Stroom (A)"
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
ActiveChart.SeriesCollection(1).Name = Sheets("blad6").Cells(1, Snaam)
Snaam = Snaam + 1
ActiveChart.SeriesCollection(1).Values = _
Range(Sheets("blad5").Cells(3, 5), Sheets("blad5").Cells(Laatsteregel, 5))
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabels.NumberFormat = "m/d/yyyy"
.TickLabelSpacing = (Laatsteregel / 5)
.TickMarkSpacing = (Laatsteregel / 10)
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
Kan iemand mij helpen. Alvast bedankt.
hallo allemaal,
Ik ben voor het eerst bezig met VBA om een macro te schrijven voor excel ik heb tot nu toe de volgende code. Op die een of andere manier wil het niet werken en krijg ik de foutmelding bij de assen van de grafiek. Ik krijg dan de foutmelding:
Fout 1004 tijdens uitvoering:
Eigenschap XValues van klasse Series kan niet worden ingesteld.
De code van de macro is alsvolgt:
Dim Laatsteregel As Integer
Dim Kolom As Integer
Dim Reeksnr As Integer
Dim Aantalkolom As Integer
Dim Naam As Integer
Sheets("blad6").Select
For I = 4 To 253 Step 3 'met deze loop worden alle belastingen gesorteerd van Hoog naar laag
Cells(3, I).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Cells(3, I), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next I
Laatsteregel = Range("Blad6!A1").SpecialCells(xlCellTypeLastCell).Row
Kolom = 4
Reeksnr = 1
Aantalkolom = 4
Naam = 2
For A = 1 To 85 'met deze loop wordt bepaald hoeveel kabels er in het excelbestand staan
If (Cells(3, Aantalkolom).Value = "") Then
Exit For
End If
Aantalkolom = Aantalkolom + 3
Next A
For J = 1 To 85 'hier worden de grafieken gemaakt 5 kabels per grafiek
If Kolom = Aantalkolom Then
Exit For
End If
If Reeksnr > 5 Or J = 1 Then
Charts.Add
ActiveChart.ChartType = xlLine
If J > 1 Then
ActiveChart.SeriesCollection.NewSeries
End If
ActiveChart.SeriesCollection(1).XValues = _
Range(Sheets("blad6").Cells(3, 1), Sheets("blad6").Cells(Laatsteregel, 1))
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabelSpacing = (Laatsteregel / 10)
.TickMarkSpacing = (Laatsteregel / 20)
.TickLabels.NumberFormat = "0"
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Kabel Belasting"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Periode (%)"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Belasting (%)"
End With
Reeksnr = 1
Else
ActiveChart.SeriesCollection.NewSeries
End If
ActiveChart.SeriesCollection(Reeksnr).Values = _
Range(Sheets("blad6").Cells(3, Kolom), Sheets("blad6").Cells(Laatsteregel, Kolom))
ActiveChart.SeriesCollection(Reeksnr).Name = Sheets("blad6").Cells(1, Naam)
Kolom = Kolom + 3
Naam = Naam + 3
Reeksnr = Reeksnr + 1
Next J
kabelnummer = Application.InputBox("geef het kabelnummer van de kabel ")
Kabelnaam = kabelnummer & " 3 fasen"
Snaam = 2
For A = 1 To 85 ' bepalen van de kabel
If (Worksheets("blad6").Cells(1, Snaam).Value = Kabelnaam) Then
Exit For
End If
Snaam = Snaam + 3
Next A
Charts.Add ' maken van de grafiek met de stroom
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = _
Range(Sheets("blad5").Cells(3, 1), Sheets("blad5").Cells(Laatsteregel, 1))
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Stroom "
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Datum"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Stroom (A)"
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
ActiveChart.SeriesCollection(1).Name = Sheets("blad6").Cells(1, Snaam)
Snaam = Snaam + 1
ActiveChart.SeriesCollection(1).Values = _
Range(Sheets("blad5").Cells(3, 5), Sheets("blad5").Cells(Laatsteregel, 5))
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabels.NumberFormat = "m/d/yyyy"
.TickLabelSpacing = (Laatsteregel / 5)
.TickMarkSpacing = (Laatsteregel / 10)
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
Kan iemand mij helpen. Alvast bedankt.
Laatst bewerkt: