Macro.bas
217 lines
| 9.2 KiB
| text/x-vbnet
|
VbNetLexer
| 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 | ||||
| End With | ||||
| Next i | ||||
| End Sub | ||||
| 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 | ||||
| End With | ||||
| Next i | ||||
| End Sub | ||||
| Sub AktualisiereXYDiagrammInkrementWiderstand() | ||||
| Dim wsAktuell As Worksheet | ||||
| Dim ws As Worksheet | ||||
| Dim chartObj As ChartObject | ||||
| Dim diagramm As Chart | ||||
| Dim letzteZeile As Long | ||||
| Dim letzteSpalte As Long | ||||
| Dim datenBereichX As Range | ||||
| Dim datenBereichY1 As Range | ||||
| Dim datenReihe As Series | ||||
| Dim diagrammTitel As String | ||||
| Dim startZeile As Long | ||||
| Dim blockAnzahl As Long | ||||
| Dim blockStartSpalte As Long | ||||
| Dim blockEndSpalte As Long | ||||
| Dim blockIndex As Integer | ||||
| ' Arbeitsblatt "Widerstandsdiagramm" festlegen | ||||
| Set wsAktuell = ThisWorkbook.Worksheets("Widerstandsdiagramm") | ||||
| ' Diagramm auf "Widerstandsdiagramm" suchen | ||||
| If wsAktuell.ChartObjects.Count = 0 Then | ||||
| MsgBox "Kein Diagramm auf 'Widerstandsdiagramm' gefunden.", vbExclamation | ||||
| Exit Sub | ||||
| End If | ||||
| Set chartObj = wsAktuell.ChartObjects(1) | ||||
| Set diagramm = chartObj.Chart | ||||
| ' Vorhandene Datenreihen löschen | ||||
| Do While diagramm.SeriesCollection.Count > 0 | ||||
| diagramm.SeriesCollection(1).Delete | ||||
| Loop | ||||
| ' Alle Blätter vor "Widerstandsdiagramm" durchlaufen | ||||
| For Each ws In ThisWorkbook.Worksheets | ||||
| If ws.Index < wsAktuell.Index Then | ||||
| ' Letzte Zeile im Blatt ermitteln | ||||
| letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row | ||||
| ' Prüfen, ob relevante Daten vorhanden sind | ||||
| If letzteZeile >= 3 Then | ||||
| ' Startzeile und Anzahl der Datenblöcke definieren | ||||
| startZeile = 3 | ||||
| blockStartSpalte = 1 ' Erste Spalte für x | ||||
| blockEndSpalte = 3 ' Spalten x, y1, y2 | ||||
| blockAnzahl = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column / 3 ' Anzahl Blöcke | ||||
| ' Datenblöcke durchlaufen | ||||
| For blockIndex = 0 To blockAnzahl - 1 | ||||
| ' X-Werte und Y1-Werte für den aktuellen Block definieren | ||||
| With ws | ||||
| Set datenBereichX = .Range(.Cells(startZeile, blockStartSpalte + blockIndex * 3), _ | ||||
| .Cells(letzteZeile, blockStartSpalte + blockIndex * 3)) ' Spalte X | ||||
| Set datenBereichY1 = .Range(.Cells(startZeile, blockStartSpalte + blockIndex * 3 + 1), _ | ||||
| .Cells(letzteZeile, blockStartSpalte + blockIndex * 3 + 1)) ' Spalte Y1 | ||||
| ' Neue Datenreihe hinzufügen | ||||
| Set datenReihe = diagramm.SeriesCollection.NewSeries | ||||
| datenReihe.Values = datenBereichY1 | ||||
| datenReihe.XValues = datenBereichX | ||||
| datenReihe.Name = ws.Name & " - Position " & (blockIndex + 1) | ||||
| End With | ||||
| Next blockIndex | ||||
| End If | ||||
| End If | ||||
| Next ws | ||||
| End Sub | ||||
| Sub AktualisiereXYDiagrammInkrementKraft() | ||||
| Dim wsWiderstand As Worksheet | ||||
| Dim wsKraft As Worksheet | ||||
| 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 diagrammTitel As String | ||||
| Dim startZeile As Long | ||||
| Dim blockAnzahl As Long | ||||
| Dim blockStartSpalte As Long | ||||
| Dim blockEndSpalte As Long | ||||
| Dim blockIndex As Integer | ||||
| ' Arbeitsblätter "Widerstandsdiagramm" und "Kraftdiagramm" festlegen | ||||
| Set wsWiderstand = ThisWorkbook.Worksheets("Widerstandsdiagramm") | ||||
| Set wsKraft = ThisWorkbook.Worksheets("Kraftdiagramm") | ||||
| ' Diagramm auf "Kraftdiagramm" suchen | ||||
| If wsKraft.ChartObjects.Count = 0 Then | ||||
| MsgBox "Kein Diagramm auf 'Kraftdiagramm' gefunden.", vbExclamation | ||||
| Exit Sub | ||||
| End If | ||||
| Set chartObj = wsKraft.ChartObjects(1) | ||||
| Set diagramm = chartObj.Chart | ||||
| ' Vorhandene Datenreihen löschen | ||||
| Do While diagramm.SeriesCollection.Count > 0 | ||||
| diagramm.SeriesCollection(1).Delete | ||||
| Loop | ||||
| ' Alle Blätter vor "Widerstandsdiagramm" durchlaufen | ||||
| For Each ws In ThisWorkbook.Worksheets | ||||
| If ws.Index < wsWiderstand.Index Then | ||||
| ' Letzte Zeile im Blatt ermitteln | ||||
| letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row | ||||
| ' Prüfen, ob relevante Daten vorhanden sind | ||||
| If letzteZeile >= 3 Then | ||||
| ' Startzeile und Anzahl der Datenblöcke definieren | ||||
| startZeile = 3 | ||||
| blockStartSpalte = 1 ' Erste Spalte für x | ||||
| blockEndSpalte = 3 ' Spalten x, y1, y2 | ||||
| blockAnzahl = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column / 3 ' Anzahl Blöcke | ||||
| ' Datenblöcke durchlaufen | ||||
| For blockIndex = 0 To blockAnzahl - 1 | ||||
| ' X-Werte und Y2-Werte für den aktuellen Block definieren | ||||
| With ws | ||||
| Set datenBereichX = .Range(.Cells(startZeile, blockStartSpalte + blockIndex * 3), _ | ||||
| .Cells(letzteZeile, blockStartSpalte + blockIndex * 3)) ' Spalte X | ||||
| Set datenBereichY2 = .Range(.Cells(startZeile, blockStartSpalte + blockIndex * 3 + 2), _ | ||||
| .Cells(letzteZeile, blockStartSpalte + blockIndex * 3 + 2)) ' Spalte Y2 | ||||
| ' Neue Datenreihe hinzufügen | ||||
| Set datenReihe = diagramm.SeriesCollection.NewSeries | ||||
| datenReihe.Values = datenBereichY2 | ||||
| datenReihe.XValues = datenBereichX | ||||
| datenReihe.Name = ws.Name & " - Position " & (blockIndex + 1) | ||||
| End With | ||||
| Next blockIndex | ||||
| End If | ||||
| End If | ||||
| Next ws | ||||
| End Sub | ||||
