ich hab ein kleines Problem mit einem VBA-Code, welches ich gerade trotz mehrerer Versuche nicht mehr selbst gelöst bekomme. Der eigentliche Code funktioniert zwar super aber ich will diesen etwas überarbeiten und komme hier nicht weiter.
Der Code (siehe Ende) wertet Daten einer Spalte aus und zeichnet aufgrund dessen in einer neuen Lasche verschieden lange Linien, welche allesamt dann eine Grafik ergeben. In besagter Spalte befinden sich unsortiert Werte zwischen 1 und 7, welche auch unsortiert bleiben müssen. Der Code funktioniert wunderbar, ich würde diesen nun jedoch gerne so überarbeiten, dass er für alle Werte außer "1" diese Linien zeichnet. Bisher habe ich es mit einer Hilfstabelle gelöst, die alle Daten ohne die "1" übernimmt und hierauf dann den Code angewandt, ich würde es jedoch gerne langfristig ohne Hilfstabelle lösen.
Ich hoffe ich konnte halbwegs erklären was ich meine und hoffe ihr könnt mir weiterhelfen.
Vielen Dank bereits vorab und liebe Grüße,
Chris
Im Folgenden noch der Code:
Sub Draw_lines()
Dim i As Integer
Dim Length As Integer
Dim pixeljump As Integer
Dim j As Integer
Dim k As Integer
i = 2
Length = 0
pixeljump = 11
j = 0
k = 0
'Löscht potentiell existierende Grafiken
For k = GRAFIK.Shapes.Count To 1 Step -1
GRAFIK.Shapes(k).Delete
Next
Do Until DATA.Cells(i, 17) = ""
Length = DATA.Cells(i, 17)
'Die if-Formel prüft (auf rudimentäre Weise) ob sich die Stadt geändert hat. Falls ja wird _
ein größere Sprung veranlasst
If DATA.Cells(i, 2) = DATA.Cells(i - 1, 2) Then
Else
j = j + 1
End If
'Adds Line
With GRAFIK.Shapes.AddShape(msoShapeRectangle, 10 + ((i + j) * pixeljump), 10, 2, _
Length * 50)
.Fill.ForeColor.RGB = RGB(244, 216, 166)
.Line.Visible = msoFalse
End With
'Adds first circle
With GRAFIK.Shapes.AddShape(msoShapeOval, 8.5 + ((i + j) * pixeljump), 8, 5, 5)
.Fill.ForeColor.RGB = RGB(215, 43, 85)
.Line.Visible = msoFalse
End With
'Adds end circle
With GRAFIK.Shapes.AddShape(msoShapeOval, 6 + ((i + j) * pixeljump), (Length + 0.1) * _
50, 10, 10)
.Fill.ForeColor.RGB = RGB(68, 84, 106)
.Line.Visible = msoFalse
End With
i = i + 1
Loop
End Sub