|
|
' =========================================
|
|
|
' 1) Widerstandsdiagramme für die Standard Messung
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammWiderstand()
|
|
|
Dim datenWs As Worksheet
|
|
|
Dim diagrammWs As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim xRange As Range
|
|
|
Dim yRange As Range
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim letzteZeile As Long
|
|
|
Dim i As Long
|
|
|
' Arbeitsblätter definieren
|
|
|
Set datenWs = ThisWorkbook.Worksheets(1) ' Blatt mit den Daten
|
|
|
Set diagrammWs = ThisWorkbook.Worksheets(3) ' Blatt mit dem Diagramm
|
|
|
' Diagramm definieren
|
|
|
Set chartObj = diagrammWs.ChartObjects(1) ' Diagrammname anpassen
|
|
|
Set diagramm = chartObj.Chart
|
|
|
' Letzte Zeile und Spalte der Daten finden
|
|
|
letzteZeile = datenWs.Cells(datenWs.Rows.Count, 1).End(xlUp).Row ' X-Werte in Spalte A
|
|
|
letzteSpalte = datenWs.Cells(3, datenWs.Columns.Count).End(xlToLeft).Column ' Y-Werte ab Spalte B
|
|
|
' MsgBox letzteZeile, vbInformation
|
|
|
' MsgBox letzteSpalte, vbInformation
|
|
|
' X-Werte-Bereich definieren (fix in Spalte A, ab Zeile 3)
|
|
|
Set xRange = datenWs.Range(datenWs.Cells(3, 1), datenWs.Cells(letzteZeile, 1)) ' Daten beginnen ab Zeile 3
|
|
|
' Bestehende Datenreihen im Diagramm entfernen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
' Neue Datenreihen hinzufügen
|
|
|
For i = 2 To letzteSpalte ' Y-Werte beginnen in Spalte B
|
|
|
Set yRange = datenWs.Range(datenWs.Cells(3, i), datenWs.Cells(letzteZeile, i))
|
|
|
' Neue Datenreihe hinzufügen
|
|
|
With diagramm.SeriesCollection.NewSeries
|
|
|
.Name = datenWs.Cells(2, i).Value ' Name der Reihe aus der Kopfzeile (Zeile 1)
|
|
|
.XValues = xRange
|
|
|
.Values = yRange
|
|
|
.Smooth = False ' Glätten ausschalten
|
|
|
End With
|
|
|
Next i
|
|
|
End Sub
|
|
|
' =========================================
|
|
|
' 2) Kraftdiagramme für die Standard Messung
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammKraft()
|
|
|
Dim datenWs As Worksheet
|
|
|
Dim diagrammWs As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim xRange As Range
|
|
|
Dim yRange As Range
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim letzteZeile As Long
|
|
|
Dim i As Long
|
|
|
' Arbeitsblätter definieren
|
|
|
Set datenWs = ThisWorkbook.Worksheets(2) ' Blatt mit den Daten
|
|
|
Set diagrammWs = ThisWorkbook.Worksheets(4) ' Blatt mit dem Diagramm
|
|
|
' Diagramm definieren
|
|
|
Set chartObj = diagrammWs.ChartObjects(1) ' Diagrammname anpassen
|
|
|
Set diagramm = chartObj.Chart
|
|
|
' Letzte Zeile und Spalte der Daten finden
|
|
|
letzteZeile = datenWs.Cells(datenWs.Rows.Count, 1).End(xlUp).Row ' X-Werte in Spalte A
|
|
|
letzteSpalte = datenWs.Cells(3, datenWs.Columns.Count).End(xlToLeft).Column ' Y-Werte ab Spalte B
|
|
|
'MsgBox letzteZeile, vbInformation
|
|
|
'MsgBox letzteSpalte, vbInformation
|
|
|
' X-Werte-Bereich definieren (fix in Spalte A, ab Zeile 3)
|
|
|
Set xRange = datenWs.Range(datenWs.Cells(3, 1), datenWs.Cells(letzteZeile, 1)) ' Daten beginnen ab Zeile 3
|
|
|
' Bestehende Datenreihen im Diagramm entfernen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
' Neue Datenreihen hinzufügen
|
|
|
For i = 2 To letzteSpalte ' Y-Werte beginnen in Spalte B
|
|
|
Set yRange = datenWs.Range(datenWs.Cells(3, i), datenWs.Cells(letzteZeile, i))
|
|
|
' Neue Datenreihe hinzufügen
|
|
|
With diagramm.SeriesCollection.NewSeries
|
|
|
.Name = datenWs.Cells(2, i).Value ' Name der Reihe aus der Kopfzeile (Zeile 1)
|
|
|
.XValues = xRange
|
|
|
.Values = yRange
|
|
|
.Smooth = False ' Glätten ausschalten
|
|
|
End With
|
|
|
Next i
|
|
|
End Sub
|
|
|
' =========================================
|
|
|
' 5) Widerstandsdiagramme für die Inkrement-Messung (Position-Gruppierung)
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammInkrementWiderstandPosition()
|
|
|
Dim wsBasis As Worksheet
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim blockAnzahl As Long
|
|
|
Dim startZeile As Long
|
|
|
Dim posIndex As Integer
|
|
|
|
|
|
' Arbeitsblatt "Widerstandsdiagramm" festlegen
|
|
|
Set wsBasis = ThisWorkbook.Worksheets("Widerstandsdiagramm")
|
|
|
|
|
|
' --- Schritt 1: Anzahl der Positions-Blöcke ermitteln ---
|
|
|
' Wir nehmen das erste Messblatt vor "Widerstandsdiagramm" als Referenz
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < wsBasis.Index Then
|
|
|
letzteSpalte = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
|
|
|
blockAnzahl = Int(letzteSpalte / 3)
|
|
|
Exit For
|
|
|
End If
|
|
|
Next ws
|
|
|
|
|
|
If blockAnzahl = 0 Then
|
|
|
MsgBox "Keine Datenblöcke gefunden.", vbExclamation
|
|
|
Exit Sub
|
|
|
End If
|
|
|
|
|
|
' --- Schritt 2: Diagramm im Basisblatt für Position 1 aktualisieren ---
|
|
|
Call AktualisiereDiagrammFuerPosition(wsBasis, 1)
|
|
|
|
|
|
' --- Schritt 3: Für jede weitere Position Blatt kopieren und Diagramm anpassen ---
|
|
|
For posIndex = 2 To blockAnzahl
|
|
|
wsBasis.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count-1)
|
|
|
With ActiveSheet
|
|
|
.Name = "Widerstandsdiagramm" & posIndex
|
|
|
Call AktualisiereDiagrammFuerPosition(ActiveSheet, posIndex)
|
|
|
End With
|
|
|
Next posIndex
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub AktualisiereDiagrammFuerPosition(wsDiagramm As Worksheet, posIndex As Integer)
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim datenBereichX As Range
|
|
|
Dim datenBereichY1 As Range
|
|
|
Dim datenReihe As Series
|
|
|
Dim startSpalte As Long
|
|
|
Dim startZeile As Long
|
|
|
Dim reihenName As String
|
|
|
|
|
|
' Diagramm im Blatt suchen
|
|
|
If wsDiagramm.ChartObjects.Count = 0 Then Exit Sub
|
|
|
Set chartObj = wsDiagramm.ChartObjects(1)
|
|
|
Set diagramm = chartObj.Chart
|
|
|
|
|
|
' Vorhandene Datenreihen löschen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
|
|
|
' Spalten für gewünschte Position bestimmen
|
|
|
startSpalte = (posIndex - 1) * 3 + 1
|
|
|
startZeile = 3
|
|
|
|
|
|
' Alle Messblätter vor "Widerstandsdiagramm" durchlaufen
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then
|
|
|
letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
|
|
|
If letzteZeile >= startZeile Then
|
|
|
With ws
|
|
|
' X und Y1 für diese Position
|
|
|
Set datenBereichX = .Range(.Cells(startZeile, startSpalte), .Cells(letzteZeile, startSpalte))
|
|
|
Set datenBereichY1 = .Range(.Cells(startZeile, startSpalte + 1), .Cells(letzteZeile, startSpalte + 1))
|
|
|
|
|
|
' Reihenname: Blattname + A1 + Position
|
|
|
reihenName = ws.Name
|
|
|
|
|
|
' Datenreihe hinzufügen
|
|
|
Set datenReihe = diagramm.SeriesCollection.NewSeries
|
|
|
datenReihe.Values = datenBereichY1
|
|
|
datenReihe.XValues = datenBereichX
|
|
|
datenReihe.Name = reihenName
|
|
|
|
|
|
On Error Resume Next
|
|
|
datenReihe.Smooth = False
|
|
|
On Error GoTo 0
|
|
|
End With
|
|
|
End If
|
|
|
End If
|
|
|
Next ws
|
|
|
End Sub
|
|
|
|
|
|
' =========================================
|
|
|
' 6) Kraftdiagramme für die Inkrement-Messung (Position-Gruppierung)
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammInkrementKraftPosition()
|
|
|
Dim wsBasis As Worksheet
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim blockAnzahl As Long
|
|
|
Dim posIndex As Integer
|
|
|
|
|
|
' Arbeitsblatt "Kraftdiagramm" festlegen
|
|
|
Set wsBasis = ThisWorkbook.Worksheets("Kraftdiagramm")
|
|
|
|
|
|
' --- Schritt 1: Anzahl der Positions-Blöcke ermitteln ---
|
|
|
' Wir nehmen das erste Messblatt vor "Widerstandsdiagramm" als Referenz
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then
|
|
|
letzteSpalte = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
|
|
|
blockAnzahl = Int(letzteSpalte / 3)
|
|
|
Exit For
|
|
|
End If
|
|
|
Next ws
|
|
|
|
|
|
If blockAnzahl = 0 Then
|
|
|
MsgBox "Keine Datenblöcke gefunden.", vbExclamation
|
|
|
Exit Sub
|
|
|
End If
|
|
|
|
|
|
' --- Schritt 2: Diagramm im Basisblatt für Position 1 aktualisieren ---
|
|
|
Call AktualisiereDiagrammFuerPosition_Kraft(wsBasis, 1)
|
|
|
|
|
|
' --- Schritt 3: Für jede weitere Position Blatt kopieren und Diagramm anpassen ---
|
|
|
For posIndex = 2 To blockAnzahl
|
|
|
wsBasis.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
|
|
|
With ActiveSheet
|
|
|
.Name = "Kraftdiagramm" & posIndex
|
|
|
Call AktualisiereDiagrammFuerPosition_Kraft(ActiveSheet, posIndex)
|
|
|
End With
|
|
|
Next posIndex
|
|
|
End Sub
|
|
|
|
|
|
Private Sub AktualisiereDiagrammFuerPosition_Kraft(wsDiagramm As Worksheet, posIndex As Integer)
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim datenBereichX As Range
|
|
|
Dim datenBereichY2 As Range
|
|
|
Dim datenReihe As Series
|
|
|
Dim startSpalte As Long
|
|
|
Dim startZeile As Long
|
|
|
Dim reihenName As String
|
|
|
|
|
|
' Diagramm im Blatt suchen
|
|
|
If wsDiagramm.ChartObjects.Count = 0 Then Exit Sub
|
|
|
Set chartObj = wsDiagramm.ChartObjects(1)
|
|
|
Set diagramm = chartObj.Chart
|
|
|
|
|
|
' Vorhandene Datenreihen löschen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
|
|
|
' Spalten für gewünschte Position bestimmen
|
|
|
startSpalte = (posIndex - 1) * 3 + 1
|
|
|
startZeile = 3
|
|
|
|
|
|
' Alle Messblätter vor "Widerstandsdiagramm" durchlaufen
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then
|
|
|
letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
|
|
|
If letzteZeile >= startZeile Then
|
|
|
With ws
|
|
|
' X und Y2 für diese Position
|
|
|
Set datenBereichX = .Range(.Cells(startZeile, startSpalte), .Cells(letzteZeile, startSpalte))
|
|
|
Set datenBereichY2 = .Range(.Cells(startZeile, startSpalte + 2), .Cells(letzteZeile, startSpalte + 2))
|
|
|
|
|
|
' Reihenname: Blattname
|
|
|
reihenName = ws.Name
|
|
|
|
|
|
' Datenreihe hinzufügen
|
|
|
Set datenReihe = diagramm.SeriesCollection.NewSeries
|
|
|
datenReihe.Values = datenBereichY2
|
|
|
datenReihe.XValues = datenBereichX
|
|
|
datenReihe.Name = reihenName
|
|
|
|
|
|
On Error Resume Next
|
|
|
datenReihe.Smooth = False
|
|
|
On Error GoTo 0
|
|
|
End With
|
|
|
End If
|
|
|
End If
|
|
|
Next ws
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' =========================================
|
|
|
' 3) Widerstandsdiagramme für die Inkrement-Messung (Messung-Gruppierung)
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammInkrementWiderstand()
|
|
|
Dim wsBasis As Worksheet
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim blockAnzahl As Long
|
|
|
Dim messungIndex As Integer
|
|
|
|
|
|
' Arbeitsblatt "Widerstandsdiagramm" festlegen
|
|
|
Set wsBasis = ThisWorkbook.Worksheets("Widerstandsdiagramm")
|
|
|
|
|
|
' --- Anzahl der Positions-Blöcke ermitteln (aus erstem Messblatt) ---
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < wsBasis.Index Then
|
|
|
letzteSpalte = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
|
|
|
blockAnzahl = Int(letzteSpalte / 3)
|
|
|
Exit For
|
|
|
End If
|
|
|
Next ws
|
|
|
|
|
|
If blockAnzahl = 0 Then
|
|
|
MsgBox "Keine Datenblöcke gefunden.", vbExclamation
|
|
|
Exit Sub
|
|
|
End If
|
|
|
|
|
|
' --- Diagramm im Basisblatt für Messung 1 aktualisieren ---
|
|
|
Call AktualisiereDiagrammFuerMessung_Widerstand(wsBasis, 1, blockAnzahl)
|
|
|
|
|
|
' --- Für jede weitere Messung: Blatt kopieren ---
|
|
|
For messungIndex = 2 To wsBasis.Index - 1
|
|
|
wsBasis.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count-1)
|
|
|
With ActiveSheet
|
|
|
.Name = "Widerstandsdiagramm" & messungIndex
|
|
|
Call AktualisiereDiagrammFuerMessung_Widerstand(ActiveSheet, messungIndex, blockAnzahl)
|
|
|
End With
|
|
|
Next messungIndex
|
|
|
End Sub
|
|
|
|
|
|
Private Sub AktualisiereDiagrammFuerMessung_Widerstand(wsDiagramm As Worksheet, messungNr As Integer, blockAnzahl As Long)
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim datenBereichX As Range
|
|
|
Dim datenBereichY1 As Range
|
|
|
Dim datenReihe As Series
|
|
|
Dim posIndex As Integer
|
|
|
Dim startSpalte As Long
|
|
|
Dim startZeile As Long
|
|
|
|
|
|
' Diagramm im Blatt suchen
|
|
|
If wsDiagramm.ChartObjects.Count = 0 Then Exit Sub
|
|
|
Set chartObj = wsDiagramm.ChartObjects(1)
|
|
|
Set diagramm = chartObj.Chart
|
|
|
|
|
|
' Vorhandene Datenreihen löschen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
|
|
|
startZeile = 3
|
|
|
Set ws = ThisWorkbook.Worksheets(messungNr)
|
|
|
|
|
|
letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
|
|
|
If letzteZeile >= startZeile Then
|
|
|
For posIndex = 1 To blockAnzahl
|
|
|
startSpalte = (posIndex - 1) * 3 + 1
|
|
|
Set datenBereichX = ws.Range(ws.Cells(startZeile, startSpalte), ws.Cells(letzteZeile, startSpalte))
|
|
|
Set datenBereichY1 = ws.Range(ws.Cells(startZeile, startSpalte + 1), ws.Cells(letzteZeile, startSpalte + 1))
|
|
|
|
|
|
Set datenReihe = diagramm.SeriesCollection.NewSeries
|
|
|
datenReihe.Values = datenBereichY1
|
|
|
datenReihe.XValues = datenBereichX
|
|
|
datenReihe.Name = "Position " & posIndex
|
|
|
datenReihe.Smooth = False
|
|
|
Next posIndex
|
|
|
End If
|
|
|
End Sub
|
|
|
|
|
|
' =========================================
|
|
|
' 4) Kraftdiagramme für die Inkrement-Messung (Messung-Gruppierung)
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammInkrementKraft()
|
|
|
Dim wsBasis As Worksheet
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim blockAnzahl As Long
|
|
|
Dim messungIndex As Integer
|
|
|
|
|
|
' Arbeitsblatt "Kraftdiagramm" festlegen
|
|
|
Set wsBasis = ThisWorkbook.Worksheets("Kraftdiagramm")
|
|
|
|
|
|
' --- Anzahl der Positions-Blöcke ermitteln (aus erstem Messblatt) ---
|
|
|
For Each ws In ThisWorkbook.Worksheets
|
|
|
If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then
|
|
|
letzteSpalte = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
|
|
|
blockAnzahl = Int(letzteSpalte / 3)
|
|
|
Exit For
|
|
|
End If
|
|
|
Next ws
|
|
|
|
|
|
If blockAnzahl = 0 Then
|
|
|
MsgBox "Keine Datenblöcke gefunden.", vbExclamation
|
|
|
Exit Sub
|
|
|
End If
|
|
|
|
|
|
' --- Diagramm im Basisblatt für Messung 1 aktualisieren ---
|
|
|
Call AktualisiereDiagrammFuerMessung_Kraft(wsBasis, 1, blockAnzahl)
|
|
|
|
|
|
' --- Für jede weitere Messung: Blatt kopieren ---
|
|
|
For messungIndex = 2 To ThisWorkbook.Worksheets("Widerstandsdiagramm").Index - 1
|
|
|
wsBasis.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
|
|
|
With ActiveSheet
|
|
|
.Name = "Kraftdiagramm" & messungIndex
|
|
|
Call AktualisiereDiagrammFuerMessung_Kraft(ActiveSheet, messungIndex, blockAnzahl)
|
|
|
End With
|
|
|
Next messungIndex
|
|
|
End Sub
|
|
|
|
|
|
Private Sub AktualisiereDiagrammFuerMessung_Kraft(wsDiagramm As Worksheet, messungNr As Integer, blockAnzahl As Long)
|
|
|
Dim ws As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim letzteZeile As Long
|
|
|
Dim datenBereichX As Range
|
|
|
Dim datenBereichY2 As Range
|
|
|
Dim datenReihe As Series
|
|
|
Dim posIndex As Integer
|
|
|
Dim startSpalte As Long
|
|
|
Dim startZeile As Long
|
|
|
|
|
|
' Diagramm im Blatt suchen
|
|
|
If wsDiagramm.ChartObjects.Count = 0 Then Exit Sub
|
|
|
Set chartObj = wsDiagramm.ChartObjects(1)
|
|
|
Set diagramm = chartObj.Chart
|
|
|
|
|
|
' Vorhandene Datenreihen löschen
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
|
|
|
startZeile = 3
|
|
|
Set ws = ThisWorkbook.Worksheets(messungNr)
|
|
|
|
|
|
letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
|
|
|
If letzteZeile >= startZeile Then
|
|
|
For posIndex = 1 To blockAnzahl
|
|
|
startSpalte = (posIndex - 1) * 3 + 1
|
|
|
Set datenBereichX = ws.Range(ws.Cells(startZeile, startSpalte), ws.Cells(letzteZeile, startSpalte))
|
|
|
Set datenBereichY2 = ws.Range(ws.Cells(startZeile, startSpalte + 2), ws.Cells(letzteZeile, startSpalte + 2))
|
|
|
|
|
|
Set datenReihe = diagramm.SeriesCollection.NewSeries
|
|
|
datenReihe.Values = datenBereichY2
|
|
|
datenReihe.XValues = datenBereichX
|
|
|
datenReihe.Name = "Position " & posIndex
|
|
|
datenReihe.Smooth = False
|
|
|
Next posIndex
|
|
|
End If
|
|
|
End Sub
|
|
|
|
|
|
' =========================================
|
|
|
' 7) Diagramme für die HF-Messung
|
|
|
' =========================================
|
|
|
Sub AktualisiereXYDiagrammHF()
|
|
|
Dim datenWs As Worksheet
|
|
|
Dim diagrammWs As Worksheet
|
|
|
Dim chartObj As ChartObject
|
|
|
Dim diagramm As Chart
|
|
|
Dim xRange As Range
|
|
|
Dim yRange As Range
|
|
|
Dim letzteSpalte As Long
|
|
|
Dim letzteZeile As Long
|
|
|
Dim dataIndex As Long
|
|
|
Dim chartIndex As Long
|
|
|
Dim i As Long
|
|
|
Dim s As Series
|
|
|
|
|
|
Application.ScreenUpdating = False
|
|
|
Application.EnableEvents = False
|
|
|
|
|
|
' Für Paare 2->18, 3->19...17->33
|
|
|
For dataIndex = 2 To 17
|
|
|
|
|
|
chartIndex = dataIndex + 16
|
|
|
|
|
|
Set datenWs = ThisWorkbook.Worksheets(dataIndex)
|
|
|
Set diagrammWs = ThisWorkbook.Worksheets(chartIndex)
|
|
|
Set chartObj = diagrammWs.ChartObjects(1)
|
|
|
Set diagramm = chartObj.Chart
|
|
|
|
|
|
letzteZeile = datenWs.Cells(datenWs.Rows.Count, 1).End(xlUp).Row
|
|
|
letzteSpalte = datenWs.Cells(2, datenWs.Columns.Count).End(xlToLeft).Column
|
|
|
|
|
|
Set xRange = datenWs.Range(datenWs.Cells(3, 1), datenWs.Cells(letzteZeile, 1))
|
|
|
|
|
|
Do While diagramm.SeriesCollection.Count > 0
|
|
|
diagramm.SeriesCollection(1).Delete
|
|
|
Loop
|
|
|
|
|
|
For i = 2 To letzteSpalte
|
|
|
Set yRange = datenWs.Range(datenWs.Cells(3, i), datenWs.Cells(letzteZeile, i))
|
|
|
With diagramm.SeriesCollection.NewSeries
|
|
|
.Name = datenWs.Cells(2, i).Value
|
|
|
.XValues = xRange
|
|
|
.Values = yRange
|
|
|
.Smooth = False
|
|
|
.ChartType = xlXYScatterLines
|
|
|
|
|
|
' --- Nur Linie, keine Punkte ---
|
|
|
.MarkerStyle = xlMarkerStyleNone
|
|
|
End With
|
|
|
Next i
|
|
|
|
|
|
' ---- Farben der ersten 3 Serien fest zuweisen ----
|
|
|
If diagramm.SeriesCollection.Count >= 1 Then diagramm.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 128, 64)
|
|
|
If diagramm.SeriesCollection.Count >= 2 Then diagramm.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
|
|
|
If diagramm.SeriesCollection.Count >= 3 Then diagramm.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 128, 189)
|
|
|
|
|
|
' ---- Legende nur ausblenden, wenn:
|
|
|
' Datensatz 1 leer, Datensatz 2 leer, Datensatz 3 hat Werte ----
|
|
|
Dim hat1 As Boolean, hat2 As Boolean, hat3 As Boolean
|
|
|
|
|
|
hat1 = WorksheetFunction.CountA(datenWs.Range(datenWs.Cells(3, 2), datenWs.Cells(letzteZeile, 2))) > 0 ' Spalte B
|
|
|
hat2 = WorksheetFunction.CountA(datenWs.Range(datenWs.Cells(3, 3), datenWs.Cells(letzteZeile, 3))) > 0 ' Spalte C
|
|
|
hat3 = WorksheetFunction.CountA(datenWs.Range(datenWs.Cells(3, 4), datenWs.Cells(letzteZeile, 4))) > 0 ' Spalte D
|
|
|
|
|
|
If (Not hat1) And (Not hat2) And hat3 Then
|
|
|
diagramm.HasLegend = False
|
|
|
Else
|
|
|
diagramm.HasLegend = True
|
|
|
End If
|
|
|
|
|
|
Next dataIndex
|
|
|
|
|
|
Application.EnableEvents = True
|
|
|
Application.ScreenUpdating = True
|
|
|
End Sub
|