PDA

Vollständige Version anzeigen : Graphisches Plotten in Terminschienen


Master_MP
31.08.2017, 08:01
Hallo zusammen,

ich habe mal wieder ein kleines Problem, bei dem ich gerne eure Hilfe in Anspruch nehmen würde.

Ich plotte mir in einem seperaten Excel-Blatt Figuren (Diamond o. Rechtecke), die ich einer gewissen Spalte bzw. Zeile zuweise, je nachdam welcher Monat eines jeweiliges Jahres betrifft.

Zur Erklärung:

Alle Variablen sind als Double deklariert und ganzzahlig. Es werden für jede individuelle Form die Left-, Top-Positionen, Breite und Höhe der bestimmten Zelle bestimmt und anschließend die Form dort hinein geplottet.






If Zell_Value = "hoch" Then
Top_Pos = shZiel4.Cells(4 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Top
Zell_Hoehe_Mar = shZiel4.Cells(4 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Height
Left_Pos = shZiel4.Cells(4 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Left
Zell_Breite_Mar = shZiel4.Cells(4 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Width
Else
Top_Pos = shZiel4.Cells(22 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Top
Zell_Hoehe_Mar = shZiel4.Cells(22 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Height
Left_Pos = shZiel4.Cells(22 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Left
Zell_Breite_Mar = shZiel4.Cells(22 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8))).Width
End If

Set RE_Marker = shZiel4.Shapes.AddShape(msoShapeDiamond, Left_Pos, Top_Pos, Zell_Breite_Mar, Zell_Hoehe_Mar)


Jetziges Problem: Je höher die Spaltenzahl dank der Variablen wird, desto größer ist der Versatz der geplotteten Figuren, so dass am Ende die Zuordnugn der einzelnen Monate nicht mehr passt.

Hat jemand Erfahrungsberichte oder Vorschläge, wie ich diesen Versatz wegbekomme? Durch die individuelle Spaltenwert-Berechnugnen dürften solche Versätze ja eigentlich nicht sein.

Über Hilfe wäre ich sehr dankbar, liebe Grüße
Mark-Phillip

Master_MP
06.09.2017, 08:25
*Push*

Hat jemand vielleicht noch eine Idee, wie ich dieses Problem beheben kann?

Liebe Grüße!

EarlFred
06.09.2017, 11:46
Hallo Mark-Phillip,

und was ergaben Deine eigenen Nachforschungen in der vergangenen Woche? In welcher Größenordnung weichen die Werte voneinander ab? Welchen Wert haben die Variablen tatsächlich? Welchen die Left-/Top-Eigenschaften?

Alle Variablen sind als Double deklariert und ganzzahlig.
Das ist doch Unfug.
Warum postest Du die Deklaration und Wertzuweisung eigentlich nicht mit?

Option Explicit

Sub Test()
Dim Anz_SOP As Long, SOP_Jahr_Rech As Long
Dim Komp(8) As Long

Dim Top_Pos As Single, Zell_Hoehe_Mar As Single
Dim Left_Pos As Single, Zell_Breite_Mar As Single
Dim RE_Marker As Shape
Dim Zell_Value As Variant

'Wertzuweisung....
'....
Zell_Value = "hoch"
Anz_SOP = (Rows.Count - 4) / 3
SOP_Jahr_Rech = (Columns.Count - 2) / 12
'Wertzuweisung....

If Zell_Value = "hoch" Then
With shZiel4.Cells(4 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8)))
Top_Pos = .Top
Zell_Hoehe_Mar = .Height
Left_Pos = .Left
Zell_Breite_Mar = .Width

Cells(1, 1).Value = .Top
Cells(1, 2).Value = .Left
Cells(2, 1).Value = Top_Pos
Cells(2, 2).Value = Left_Pos


End With
Else
With shZiel4.Cells(22 + 3 * Anz_SOP, 2 + (12 * SOP_Jahr_Rech + Komp(8)))
Top_Pos = .Top
Zell_Hoehe_Mar = .Height
Left_Pos = .Left
Zell_Breite_Mar = .Width

Cells(1, 1).Value = .Top
Cells(1, 2).Value = .Left
Cells(2, 1).Value = Top_Pos
Cells(2, 2).Value = Left_Pos

End With
End If

Set RE_Marker = shZiel4.Shapes.AddShape(msoShapeDiamond, Left_Pos, Top_Pos, Zell_Breite_Mar, Zell_Hoehe_Mar)
Cells(3, 1).Value = RE_Marker.Top
Cells(3, 2).Value = RE_Marker.Left


'...

Set RE_Marker = Nothing

End Sub

Grüße
EarlFred