Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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
Inhaltsverzeichnis

Diagramm enthält eine Reihe(Kurve) zu viel

Diagramm enthält eine Reihe(Kurve) zu viel
26.02.2014 11:04:31
Olli
Hallo Helfende!
Ich bin leider komplett unerfahren mit vba und habe folgendes Problem:
Ich lese eine CSV-Datei ein, was auch wunderbar funktioniert.
Jetzt möchte ich aus den Daten ein Diegramm erstellen.
Dieses funktioniert soweit auch, allerdings enthält das Diagramm noch eine unerwünschte zweite Kurve...
Außerdem wäre es wünschenswert, wenn die im Diagramm angezeigten Werte sich dynamisch mit der Anzahl an Werten in der Tabelle erweiteren.
Hier mein (aus dem Internet zusammengesuchter) Code:

Sub Datei_Importieren()
'Objekte anlegen
Dim sh As Worksheet
Dim chrt As Chart
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Set sh = ActiveWorkbook.Worksheets("Tabelle1")
Set chrt = sh.Shapes.AddChart.Chart
'Trennzeichen
Const cstrDelim As String = ";"
'Dezimalzeichen anpassen
Application.UseSystemSeparators = False
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "c:\Messungen\*.csv"  'Pfad anpassen
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 1)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
'Zellen formatieren
With Range("A:A")
.NumberFormat = "hh:mm:ss.000"
End With
With Range("B:U")
.NumberFormat = "0.00"
End With
'Spaltenbreite
Columns("A:U").WrapText = True
Columns("A:U").ColumnWidth = 20
Columns("A:U").Rows.AutoFit
With chrt
'Kurventyp
.ChartType = xlXYScatterLines
'Daten
With .SeriesCollection.NewSeries
.Name = "=Tabelle1!$T$1"
.XValues = "=Tabelle1!$A$2:$A$10"
.Values = "=Tabelle1!$T$2:$T$10"
End With
'Anzeigeort
.ChartArea.Height = 200
.ChartArea.Width = 700
'Format
.HasTitle = True
.ChartTitle.Characters.Text = "Stromverbrauch"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Zeit[hh:mm:ss,000]"
.Axes(xlCategory).HasMajorGridlines = True
.Axes(xlCategory).TickLabels.NumberFormat = "hh:mm:ss.000"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Strom [A]"
.Axes(xlValue).HasMajorGridlines = True
.HasLegend = True
End With
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
  • 26.02.2014 11:07:59
    Hajo_zi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige