VB - Chart als Variable

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    VB - Chart als Variable

    Hallo Zusammen,

    ich bin ziemlich neu in Umgang mit VB und insbesondere Charts.
    Kann mir jemand einen Tipp geben wie ich in einer Schleife das anzusprechende Diagramm als Variable deklarieren kann?

    Hier eine Schleife über 3 Diagramme, die ich gerne ohne "IF M=1 then … " programmieren möchte.

    VB.NET-Quellcode

    1. For m = 1 To 3 ' über Maschinen
    2. If m = 1 Then
    3. With Chart1
    4. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    5. .Titles.Clear()
    6. .Titles.Add("Schuster " & MaNrV)
    7. For i = 1 To 24 ' über Zeit
    8. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    9. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    10. Next i
    11. End With
    12. ElseIf m = 2 Then
    13. With Chart2
    14. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    15. .Titles.Clear()
    16. .Titles.Add("Schuster " & MaNrV)
    17. For i = 1 To 24 ' über Zeit
    18. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    19. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    20. Next i
    21. End With
    22. ElseIf m = 3 Then
    23. With Chart3
    24. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    25. .Titles.Clear()
    26. .Titles.Add("Schuster " & MaNrV)
    27. For i = 1 To 24 ' über Zeit
    28. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    29. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    30. Next i
    31. End With
    32. End If
    33. Next m
    34. For m = 1 To 3 ' über Maschinen
    35. If m = 1 Then
    36. With Chart1
    37. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    38. .Titles.Clear()
    39. .Titles.Add("Schuster " & MaNrV)
    40. For i = 1 To 24 ' über Zeit
    41. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    42. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    43. Next i
    44. End With
    45. ElseIf m = 2 Then
    46. With Chart2
    47. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    48. .Titles.Clear()
    49. .Titles.Add("Schuster " & MaNrV)
    50. For i = 1 To 24 ' über Zeit
    51. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    52. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    53. Next i
    54. End With
    55. ElseIf m = 3 Then
    56. With Chart3
    57. .ChartAreas(0).AxisX.LabelStyle.Interval = 1
    58. .Titles.Clear()
    59. .Titles.Add("Schuster " & MaNrV)
    60. For i = 1 To 24 ' über Zeit
    61. .Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    62. .Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    63. Next i
    64. End With
    65. End If
    66. Next m


    Danke im Voraus.

    Gruß Günter
    Gruß Günter
    @GünterD Willkommen im Forum. :thumbup:
    Fasse Chart1, Chart2 und Chart3 zu einem Array zusammen und feddich:

    VB.NET-Quellcode

    1. Dim charts = {Chart1, Chart2, Chart3}
    2. For m = 1 To 3 ' über Maschinen
    3. charts(m).ChartAreas(0).AxisX.LabelStyle.Interval = 1
    4. charts(m).Titles.Clear()
    5. charts(m).Titles.Add("Schuster " & MaNrV)
    6. For i = 1 To 24 ' über Zeit
    7. charts(m).Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    8. charts(m).Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    9. Next i
    10. Next m
    11. For m = 1 To 3 ' über Maschinen
    12. charts(m).ChartAreas(0).AxisX.LabelStyle.Interval = 1
    13. charts(m).Titles.Clear()
    14. charts(m).Titles.Add("Schuster " & MaNrV)
    15. For i = 1 To 24 ' über Zeit
    16. charts(m).Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    17. charts(m).Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    18. Next i
    19. Next m
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Willkommen im Forum.
    Jetzt stellt sich mir nur die Frage, warum diese komplette Schleife exakt 2x gleich hintereinander ausgeführt werden soll. Für den Fall, dass das überhaupt gewollt und sinnvoll ist, dann gleich

    VB.NET-Quellcode

    1. For l = 1 To 2
    2. For m = 1 To 3 ' über Maschinen
    3. charts(m).ChartAreas(0).AxisX.LabelStyle.Interval = 1
    4. charts(m).Titles.Clear()
    5. charts(m).Titles.Add("Schuster " & MaNrV)
    6. For i = 1 To 24 ' über Zeit
    7. charts(m).Series("Wert").Points.AddXY(xAchse(i), Werte(m, i))
    8. charts(m).Series("Ziel").Points.AddXY(xAchse(i), Ziele(i)) '
    9. Next i
    10. Next m
    11. Next
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.