AW: Automatische Erstellung von Diagrammen
04.06.2019 13:32:41
Diagrammen
Hallo,
jetzt stimmen die Werte, wenn ich die Grenzen eingebe! :)
Leider werden nach wie vor nur ein paar der Werte genommen.
Nur nochmal für mich zum mitschreiben.
In dem Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Cells(1, 8).Address Then Berechnen
If Target.Address = Cells(1, 11).Address Then Berechnen
End Sub
wird das Unterprogramm Berrechnen gestartet sobald eine der beiden Zellen manuell adressiert wurde.
Hier
Dim VON, BIS, Schritt, i, S As Integer
Dim TB1, TB2, LR As Long, Z As Long
Dim ARR
Set TB1 = Sheets("Tabelle1")
Set TB2 = Sheets("Tabelle2")
WERT = TB1.Cells(1, 11)
WERT = WorksheetFunction.Match(WERT, TB1.Range("B:B"), 0)
VonString = "Eingabe: " & TB1.Cells(WERT, 2) & " Von (in " & TB1.Cells(WERT, 6) & ")"
VON = InputBox(VonString, "", 1)
BisString = "Eingabe: " & TB1.Cells(WERT, 2) & " Bis (in " & TB1.Cells(WERT, 6) & ")"
BIS = InputBox(BisString, "", 10)
Schritt = InputBox("Eingabe Schrittweite ", "", 1)
OriginalWert = TB1.Cells(WERT, 5)
werden alle Variablen festgelegt. WERT bestimmt hierbei, welche Zeile für die Berrechnung verwendet wird und wird festgelegt durch das Dropdown Menü in Zeile 1 Spalte 11.
Da versteh ich diese Zeile nicht so ganz.
WERT = WorksheetFunction.Match(WERT, TB1.Range("B:B"), 0)
Mit der obigen Zeile wird die Funktion aufgerufen oder?
Function SpalteTxt_ausNum(iNr As Integer)
SpalteTxt_ausNum = Left(Cells(1, iNr).Address(0, 0), 1 - (iNr > 26) - (iNr > 702))
End Function
Was macht diese Funktion dan genau?
LR = TB1.Cells(TB2.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
TB2.UsedRange.ClearContents
ARR = TB1.Range(TB1.Cells(3, 3), TB1.Cells(LR, 3))
TB2.Range(TB2.Cells(1, 1), TB2.Cells(1, LR - 2)) = Application.Transpose(ARR)
Zeile = 2
AnzahlWerte = 1 + (BIS - VON) / Schritt
For i = 1 To AnzahlWerte Step 1
TB1.Cells(WERT, 5) = VON + Schritt * (i - 1)
ARR = TB1.Range(TB1.Cells(3, 5), TB1.Cells(LR, 5))
TB2.Range(TB2.Cells(Zeile, 1), TB2.Cells(Zeile, LR - 2)) = Application.Transpose(ARR)
Zeile = Zeile + 1
Next i
TB1.Cells(WERT, 5) = OriginalWert
Spalte = SpalteTxt_ausNum(WERT - 2)
Hier werden die Werte in einer Schleife berrechnet. Wie ist da der ungefähre ablauf. Würde das ganze gern versuchen in einem Programmflussdiagramm darzustellen. Wirklich nur ganz grob.
Letzter Teil des Codes.
Mom = TB1.Cells(1, 8)
Mom = Application.Match(Mom, Sheets("Daten").Range("C1:C3"), 0)
With Worksheets("Tabelle1").ChartObjects(1).Chart
'sichtbar machen
.FullSeriesCollection(1).Format.Line.Visible = msoTrue
.FullSeriesCollection(1).MarkerStyle = -4105
.FullSeriesCollection(2).Format.Line.Visible = msoTrue
.FullSeriesCollection(2).MarkerStyle = -4105
.FullSeriesCollection(1).Name = "=Tabelle2!$R$1"
.FullSeriesCollection(2).Name = "=Tabelle2!$S$1"
'Werte zuweisen
.FullSeriesCollection(1).XValues = Worksheets("Tabelle2").Range("$" & Spalte & "$2:$" & _
_
Spalte & "$" & LR)
.FullSeriesCollection(2).XValues = Worksheets("Tabelle2").Range("$" & Spalte & "$2:$" & _
_
Spalte & "$" & LR)
.FullSeriesCollection(1).Values = Worksheets("Tabelle2").Range("$R$2:$R$" & LR)
.FullSeriesCollection(2).Values = Worksheets("Tabelle2").Range("$S$2:$S$" & LR)
'Achse beschriften
.Axes(xlCategory).AxisTitle.Caption = TB1.Cells(WERT, 2) & " (" & TB1.Cells(WERT, 6) & " _
_)"
.Axes(xlValue, xlPrimary).AxisTitle.Text = TB1.Cells(1, 8) & " (Nm)"
'Ausblenden
If Mom = 1 Then
.FullSeriesCollection(2).Format.Line.Visible = msoFalse
.FullSeriesCollection(2).MarkerStyle = -4142
.FullSeriesCollection(2).Name = "="" """
End If
If Mom = 2 Then
.FullSeriesCollection(1).Format.Line.Visible = msoFalse
.FullSeriesCollection(1).MarkerStyle = -4142
.FullSeriesCollection(1).Name = "="" """
End If
End With
End Sub
Was wird durch Mom festgelegt?
Und was ist mit sichbar machen bzw. ausblenden gemeint?
Da ja nicht immer nach zwei Datenreihen gefragt ist. Wie könnte ich es machen das dan nur eine Datenreihe angezeigt wird?
Glaub ganz langsam komm ich dahinter.
Wichtig wäre noch: Wie kann ich bei den berrechneten Werten neue Hinzufügen, die dan auch in die Auswahl in Zelle H1 aufgenommen werden können?
Vielen vielen Dank.
Hoffe es wird nicht zu viel.
Grüße
Markus