• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

sparklines in excel 2003

Status
Niet open voor verdere reacties.

ChrisExcel

Nieuwe gebruiker
Lid geworden
21 aug 2013
Berichten
2
Goedemiddag,

Al geruime tijd haal ik flink wat informatie van dit forum, maar heb nog nooit zelf een vraag geplaatst, tot nu!

Ik zit met het volgende. Voor het bedrijf waar ik werk is behoefte aan een update van de bestaande tabel waarin de metrics per maand & week worden bij gehouden. De originele maker van de huidige tabel is vertrokken. Nu ben ik zelf nog niet erg thuis in vba etc. dus het is voor mij een behoorlijk uit zoek werk geweest.

Een van de eisen is dat er sparklines in de nieuwe tabel komen voor het kunnen beoordelen vd trend. Echter, er wordt gebruik gemaakt van office 2003. Onderstaand de code die ik kan vinden in VBA.

Mijn vraag is als volgt: Is het mogelijk om op basis hiervan sparklines (zonder invoegtoepassing) te creeren in een nieuw excelbestand (2003). Zo nee, in hoeverre kan ik het bestaande document aanpassen? Alvast hartelijk dank voor de hulp. (bijgevoegd: code sparkline als in vba).

Public Function SparkLine(Points As Range, Color As Long) As String

Application.ScreenUpdating = False

Const cMargin = 2
Dim rng As Range, arr() As Variant, i As Long, j As Long, k As Long
Dim dblMin As Double, dblMax As Double, shp As Shape

Set rng = Application.Caller

ShapeDelete rng

For i = 1 To Points.Count
If j = 0 Then
j = i
ElseIf Points(, j) > Points(, i) Then
j = i
End If
If k = 0 Then
k = i
ElseIf Points(, k) < Points(, i) Then
k = i
End If
Next
dblMin = Points(, j)
dblMax = Points(, k)

With rng.Worksheet.Shapes
For i = 0 To Points.Count - 2
Set shp = .AddLine( _
cMargin + rng.Left + (i * (rng.Width - (cMargin * 2)) / (Points.Count - 1)), _
cMargin + rng.Top + (dblMax - Points(, i + 1)) * (rng.Height - (cMargin * 2)) / (dblMax - dblMin), _
cMargin + rng.Left + ((i + 1) * (rng.Width - (cMargin * 2)) / (Points.Count - 1)), _
cMargin + rng.Top + (dblMax - Points(, i + 2)) * (rng.Height - (cMargin * 2)) / (dblMax - dblMin))

On Error Resume Next
j = 0: j = UBound(arr) + 1
On Error GoTo 0
ReDim Preserve arr(j)
arr(j) = shp.Name
Next

With rng.Worksheet.Shapes.Range(arr)
.Group

If Color > 0 Then .Line.ForeColor.RGB = Color Else .Line.ForeColor.SchemeColor = -Color
End With

End With

SparkLine = ""
Application.ScreenUpdating = True

End Function
Sub ShapeDelete(rngSelect As Range)
Dim shpRng As Range, shp As Shape, blnDelete As Boolean

On Error Resume Next

For Each shp In rngSelect.Worksheet.Shapes
blnDelete = False
Set shpRng = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngSelect)
If Not shpRng Is Nothing Then
If shpRng.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address Then blnDelete = True
End If

If blnDelete Then shp.Delete
Next
End Sub
Sub DeleteAllShapes()
Dim shp As Shape

For Each shp In Worksheets("Table F").Shapes
shp.Delete
Next
End Sub
 
ben er gelukkig al uitgekomen! Hartelijk dank voor eventueel genomen moeite!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan