Avatar billede jean01ad Praktikant
29. april 2008 - 14:57 Der er 4 kommentarer og
1 løsning

Trafiklys i VBA

Der findes en række programmer der annoncere med dashbords og traffic signals - altå indikatorer på, hvordan en udvikling går. Er dette muligt at udarbejde med noget VBA kode?

Jeg vil gerne bruge trafiklysne til at vise om vi er på målet med vores projekter eller ej vha. rød, gul og grøn?

Eksempelvis, hvis jeg har i værdien 100 stående i celle a1 og værdien 200 i celle a2 (Altså A1>a2) - så skal mit trafiklys vise grøn. Hvis der havde stået 100 og 100 så skal den være gul og står der 300 og 200 så skal den være rød.

Det ville være til stor hjælp, hvis det kan lade sig gøre.
Avatar billede supertekst Ekspert
29. april 2008 - 15:01 #1
Hvor havde du tænkt dig, at "Trafiklyset" skulle være placeret?
Avatar billede jean01ad Praktikant
29. april 2008 - 15:20 #2
Lige nu er det lige gyldigt. Det skal gerne være placeret i samme ark - tilfældigt.

På sigt, vil jeg gerne kunne flytte trafilysene, men fremgår det ikke af koden, hvorfra de skal hente data?

Håber meget du kan hjælpe
Avatar billede supertekst Ekspert
29. april 2008 - 18:55 #3
Koden indsættes i Ark1
Hvis du sender en mail til: pb@supertekst-it.dk - så sender jeg "TrafikLysfilerne", som er hentet fra Wikipidia - skal nok finpudses lidt m.h.t. størrelsen.
===========================================================================

Rem Celler til test af "lys"
Const cell1 = "A1"
Const cell2 = "A2"

Rem Placering - kan ændres efter ønske
Const fraVenstre = 265.5
Const fraTop = 4#

Dim sti
Private Sub worksheet_activate()
    sti = findSti
   
Rem evt. gl. lys slettes
    fjernTrafikLys
   
Rem hvis testceller er udfyldt - tændes lys
    If Range(cell1) <> "" And Range(cell2) <> "" Then
        tændTrafikLys
    End If
End Sub
Private Function findSti()
    findSti = ActiveWorkbook.Path
    If Right(findSti, 1) <> "\" Then
        findSti = findSti + "\"
    End If
End Function
Private Sub tændTrafikLys()
Dim lys
   
    If Range(cell1).Value > Range(cell2).Value Then
        lys = "grøn"
    Else
        If Range(cell1) = Range(cell2) Then
            lys = "gul"
        Else
            lys = "rød"
        End If
    End If
   
Rem cellen anvendes som udgangspunkt for justering
    Cells(1, 1).Activate
    ActiveSheet.Pictures.Insert(sti + lys + ".bmp").Select
    Selection.ShapeRange.IncrementLeft fraVenstre
    Selection.ShapeRange.IncrementTop fraTop
    Cells(1, 1).Activate
   
End Sub
Private Sub fjernTrafikLys()
    For Each lys In ActiveSheet.Pictures
        lys.Delete
    Next
End Sub
Rem Hvis TestCeller ændres beregnes "nyt trafiklys"
Rem ===============================================
Private Sub worksheet_Change(ByVal Target As Excel.Range)
Dim ræk, kol
    ræk = Target.Row
    kol = Target.Column
   
    If ræk = 1 Or ræk = 2 And kol = 1 Then
        worksheet_activate
    End If
End Sub
Avatar billede jean01ad Praktikant
08. maj 2008 - 10:16 #4
Send et svar - så er der point. Tusind tak for hjælpen.
Avatar billede supertekst Ekspert
08. maj 2008 - 10:56 #5
Det får du så - & selv tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester