Erweiterte Fragestellung
30.04.2020 11:02:50
Beverly
Hi Ulli,
in deiner Public Sub LoadFile_3rd() habe ich ein paar Codezeilen ergänzt um dem 2. Diagramm den Ausgangsdatenbereich zuzuweisen. Ab Zeile 79 anstelle des auskommentierten Codes:
'generate log data chart
With Worksheets.Item(2)
With .ChartObjects(2).Chart
.SeriesCollection(1).XValues = Worksheets("XL2_3rd_Log").Range("F27:AO27")
.SeriesCollection(1).Values = Worksheets("XL2_3rd_Log").Range("F29:AO29")
End With
End With
Außerdem habe ich im Modul Diagramm Codezeilen für das 2. Diagramm ergänzt:
Option Explicit
Dim FilmStoppen As Boolean
Dim wksX As Worksheet
Dim wksX3 As Worksheet
Dim wksD As Worksheet
Dim lngLetzte As Long
Dim varStart As Variant
Dim lngEnde As Long
Dim intSp1 As Integer
Dim intSp2 As Integer
Public blnDiagramm As Boolean
Sub DiaErstellen()
Dim lngZeile As Long
Dim lngZiel As Long
Set wksD = Worksheets("Diagramm")
Set wksX = Worksheets("XL2 Log")
intSp1 = wksD.Range("CV2") + 4
intSp2 = wksD.Range("CV3") + 4
lngZiel = 2
Application.ScreenUpdating = False
With wksD
varStart = Application.Match(.Range("H2"), wksX.Columns(3), 0)
If Not IsError(varStart) Then
lngLetzte = IIf(IsEmpty(wksX.Cells(Rows.Count, 2)), wksX.Cells(Rows.Count, 2).End( _
xlUp).Row, Rows.Count)
lngEnde = varStart + .Range("J2") - 1
If lngEnde > lngLetzte - 10 Then
If lngLetzte - 9 - varStart lngLetzte - 10 Then
MsgBox "Maximale Anzahl an Daten " & lngLetzte - 9 - varStart & " möglich"
Exit Sub
End If
Do
With .ChartObjects(1).Chart
.ChartType = xlXYScatterLinesNoMarkers
strFormel = .SeriesCollection(1).Formula
strXWerte = Split(strFormel, ",")(1)
strYWerte = Split(strFormel, ",")(2)
strXWerte = wksX.Range(strXWerte).Offset(1, 0).Address
strYWerte = wksX.Range(strYWerte).Offset(1, 0).Address
.SeriesCollection(1).XValues = wksX.Range(strXWerte)
.SeriesCollection(1).Values = wksX.Range(strYWerte)
strFormel = .SeriesCollection(2).Formula
strYWerte = Split(strFormel, ",")(2)
strYWerte = wksX.Range(strYWerte).Offset(1, 0).Address
.SeriesCollection(2).XValues = wksX.Range(strXWerte)
.SeriesCollection(2).Values = wksX.Range(strYWerte)
.Axes(xlCategory).MinimumScale = wksX.Cells(Range(strXWerte).Cells(1).Row, 3)
.Axes(xlCategory).MaximumScale = wksX.Cells(Range(strXWerte).Cells(1).Row + _
wksD.Range("J2") - 1, 3)
If Range(strXWerte).Cells(1).Row > lngLetzte - wksD.Range("J2") Then
'Codezeile ergänzt damit auch das 2. Diagramm zurückgesetzt werden kann**********
blnNeustart = True
.SeriesCollection(1).Values = wksX.Range(wksX.Cells(varStart, intSp1), wksX. _
Cells(lngEnde, intSp1))
.SeriesCollection(2).Values = wksX.Range(wksX.Cells(varStart, intSp2), wksX. _
Cells(lngEnde, intSp2))
.SeriesCollection(1).XValues = wksX.Range(wksX.Cells(varStart, 3), wksX. _
Cells(lngEnde, 3))
.SeriesCollection(2).XValues = wksX.Range(wksX.Cells(varStart, 3), wksX. _
Cells(lngEnde, 3))
.Axes(xlCategory).MinimumScale = wksX.Cells(varStart, 3)
.Axes(xlCategory).MaximumScale = wksX.Cells(lngEnde, 3)
End If
End With
'ergänzt für das 2. Diagramm*****************
If .ChartObjects.Count = 2 Then
With .ChartObjects(2).Chart
strFormel = .SeriesCollection(1).Formula
strYWerte = Split(strFormel, ",")(2)
strYWerte = wksX3.Range(strYWerte).Offset(1, 0).Address
.SeriesCollection(1).Values = wksX3.Range(strYWerte)
If blnNeustart Then
.SeriesCollection(1).XValues = wksX3.Range("F27:AO27")
.SeriesCollection(1).Values = wksX3.Range("F29:AO29")
'Variable zurücksetzen
blnNeustart = False
End If
End With
End If
t = Timer + WarteZeit
Do Until Timer > t
DoEvents
Loop
If FilmStoppen Then
Exit Do
End If
Loop
End With
End Sub
Es wird nicht geprüft, ob eine Tabelle "XL2_3rd_Log" vorhanden ist und auch Daten enthält.