14. april 2005 - 07:25Der er
8 kommentarer og 1 løsning
"Lyskryds" i userfomr
Hej, eksperter. Jeg har en userform, hvor jeg ønsker en "lampe" dvs. en cirkel der skifter farve. Den skal fungere således at når: der i celle A1 i ark1 står 1, så skal "lampen" vise grøn der i celle A1 i ark1 står 2, så skal "lampen" vise gul der i celle A1 i ark1 står 3, så skal "lampen" vise rød
Jeg vil gerne have en kolonne med 6 lamper, hvor lampe 1 er afhængig af resultatet i celle A1 i ark1, lampe 2 er afhængig af resultatet i celle A2 osv.
Det er en meget central funktion i mit projektstyringsværktøj, så jeg håber meget at i kan hjælpe mig :o)
Jeg har ikke rigtigt nogen erfaring med userforms, så jeg ved ikke om dette virker, men det er vel forsøget værd:
Indsæt følgende makro som regnearkets kode - altså det hvor A1 skal læses (højreklik på fanebladet, vælg "Vis programkode").
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then With Sheets("Dialogboks1").Shapes("Oval 4").Fill Select Case Range("$A$1") Case 1 .ForeColor.RGB = RGB(0, 255, 0) Case 2 .ForeColor.RGB = RGB(255, 255, 0) Case 3 .ForeColor.RGB = RGB(255, 0, 0) Case Else .ForeColor.RGB = RGB(0, 0, 0) End Select End With End If
End Sub
Du må lige selv finde ud af dine egne navne for "Dialogboks1" og "Oval 4"
Jeg ved heller ikke om jeg evt. bliver nødt til at anvende "image" som lampe, da jeg ikke ved hvordan jeg ellers kan sætte sådan en cirkel ind som kan navngives.
Som sagt så har jeg ikke rigtigt styr på userforms, men for en god ordens skyld: Har du ændret navnene til dine navne? Ellers virker det i hvert tilfælde ikke.
Det som jeg har lavet ovenfor virker når userformen er lukket. Jeg ved ikke hvad der sker, når den er åben.
Måske skal noget kode placeres i userformen, men så forstår jeg det ikke. Ovennævnte programstump afvilkes når celle A1 (i det faneblad, hvor koden er placeret) ændrer sig. Den hændelse kan du KUN fange her og ikke fra en userform. Så det program du vil afvikle for at ændre farven skal altså startes herfra.
Du opretter 9 ens images på din userform. I de første tre indlæser du et billede i hver (grøn, gul og rød) så du har oprettet fx i paint. De første 3 skal bare være et sted på userformen, de gemmes ved userformers aktivering. De sidste 6 placerere du så ordenligt.
Indsæt denne kode i userformens kodemodul
Private Sub UserForm_Activate() Dim x As Image Dim y As Variant Dim i As Long y = Array(Image4, Image5, Image6, Image7, Image8, Image9) Image1.Visible = False Image2.Visible = False Image3.Visible = False For i = LBound(y) To UBound(y) Set x = y(i) Select Case Range("A" & i + 1) Case 1: x.Picture = Image1.Picture Case 2: x.Picture = Image2.Picture Case 3: x.Picture = Image3.Picture End Select Next End Sub
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.