Macro.bas
517 lines
| 19.9 KiB
| text/x-vbnet
|
VbNetLexer
| r19 | ' ========================================= | |||
| r32 | ' 1) Widerstandsdiagramme für die Standard Messung | |||
| r19 | ' ========================================= | |||
| r12 | 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 | ||||
| r18 | .Smooth = False ' Glätten ausschalten | |||
| r12 | End With | |||
| Next i | ||||
| End Sub | ||||
| r19 | ' ========================================= | |||
| r32 | ' 2) Kraftdiagramme für die Standard Messung | |||
| r19 | ' ========================================= | |||
| r12 | 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 | ||||
| r18 | .Smooth = False ' Glätten ausschalten | |||
| r12 | End With | |||
| Next i | ||||
| End Sub | ||||
| r19 | ' ========================================= | |||
| r32 | ' 5) Widerstandsdiagramme für die Inkrement-Messung (Position-Gruppierung) | |||
| r19 | ' ========================================= | |||
| Sub AktualisiereXYDiagrammInkrementWiderstandPosition() | ||||
| Dim wsBasis As Worksheet | ||||
| r12 | Dim ws As Worksheet | |||
| Dim chartObj As ChartObject | ||||
| Dim diagramm As Chart | ||||
| Dim letzteZeile As Long | ||||
| Dim letzteSpalte As Long | ||||
| r19 | Dim blockAnzahl As Long | |||
| r12 | Dim startZeile As Long | |||
| r19 | Dim posIndex As Integer | |||
| r12 | ||||
| ' Arbeitsblatt "Widerstandsdiagramm" festlegen | ||||
| r19 | Set wsBasis = ThisWorkbook.Worksheets("Widerstandsdiagramm") | |||
| r12 | ||||
| r19 | ' --- 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 | ||||
| r12 | Exit Sub | |||
| End If | ||||
| r19 | ' --- 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) | ||||
| r12 | Set diagramm = chartObj.Chart | |||
| ' Vorhandene Datenreihen löschen | ||||
| Do While diagramm.SeriesCollection.Count > 0 | ||||
| diagramm.SeriesCollection(1).Delete | ||||
| Loop | ||||
| r19 | ' Spalten für gewünschte Position bestimmen | |||
| startSpalte = (posIndex - 1) * 3 + 1 | ||||
| startZeile = 3 | ||||
| ' Alle Messblätter vor "Widerstandsdiagramm" durchlaufen | ||||
| r12 | For Each ws In ThisWorkbook.Worksheets | |||
| r19 | If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then | |||
| r12 | letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row | |||
| r19 | 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 | ||||
| r12 | End If | |||
| End If | ||||
| Next ws | ||||
| End Sub | ||||
| r19 | ||||
| ' ========================================= | ||||
| r32 | ' 6) Kraftdiagramme für die Inkrement-Messung (Position-Gruppierung) | |||
| r19 | ' ========================================= | |||
| 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 | ||||
| r12 | ||||
| r19 | Private Sub AktualisiereDiagrammFuerPosition_Kraft(wsDiagramm As Worksheet, posIndex As Integer) | |||
| r12 | 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 | ||||
| r19 | Dim startSpalte As Long | |||
| r12 | Dim startZeile As Long | |||
| r19 | 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 | ||||
| ' ========================================= | ||||
| r32 | ' 3) Widerstandsdiagramme für die Inkrement-Messung (Messung-Gruppierung) | |||
| r19 | ' ========================================= | |||
| Sub AktualisiereXYDiagrammInkrementWiderstand() | ||||
| Dim wsBasis As Worksheet | ||||
| Dim ws As Worksheet | ||||
| Dim chartObj As ChartObject | ||||
| Dim diagramm As Chart | ||||
| Dim letzteSpalte As Long | ||||
| r12 | Dim blockAnzahl As Long | |||
| r19 | Dim messungIndex As Integer | |||
| r12 | ||||
| r19 | ' Arbeitsblatt "Widerstandsdiagramm" festlegen | |||
| Set wsBasis = ThisWorkbook.Worksheets("Widerstandsdiagramm") | ||||
| r12 | ||||
| r19 | ' --- 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 | ||||
| r12 | Exit Sub | |||
| End If | ||||
| r19 | ' --- 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) | ||||
| r12 | Set diagramm = chartObj.Chart | |||
| ' Vorhandene Datenreihen löschen | ||||
| Do While diagramm.SeriesCollection.Count > 0 | ||||
| diagramm.SeriesCollection(1).Delete | ||||
| Loop | ||||
| r19 | 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 | ||||
| ' ========================================= | ||||
| r32 | ' 4) Kraftdiagramme für die Inkrement-Messung (Messung-Gruppierung) | |||
| r19 | ' ========================================= | |||
| 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) --- | ||||
| r12 | For Each ws In ThisWorkbook.Worksheets | |||
| r19 | If ws.Index < ThisWorkbook.Worksheets("Widerstandsdiagramm").Index Then | |||
| letzteSpalte = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column | ||||
| blockAnzahl = Int(letzteSpalte / 3) | ||||
| Exit For | ||||
| r12 | End If | |||
| Next ws | ||||
| r19 | ||||
| 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 | ||||
| r12 | End Sub | |||
| r19 | ||||
| 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 | ||||
| r32 | ||||
| ' ========================================= | ||||
| ' 7) Diagramme für die HF-Messung | ||||
| ' ========================================= | ||||
| Sub AktualisiereXYDiagrammHF() | ||||
| r19 | ||||
| r32 | 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 | ||||
| r33 | ' Für Paare 2->18, 3->19...17->33 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |||
| For dataIndex = 2 To 17 | ||||
| r32 | ||||
| r33 | chartIndex = dataIndex + 16 | |||
| r32 | ||||
| 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) | ||||
| Next dataIndex | ||||
| Application.EnableEvents = True | ||||
| Application.ScreenUpdating = True | ||||
| End Sub | ||||
| r12 | ||||
