Avatar billede jamark Praktikant
21. november 2004 - 17:26 Der er 30 kommentarer og
1 løsning

Funktion til visning af billeder

Hvordan laver man en funktion som har følgende effekt:
Når der står 1 i C4 skal ét billede vises. Når der står 2 skal et andet billede vises. Og når der står 3 skal et tredie vises.
Avatar billede sjap Praktikant
21. november 2004 - 18:24 #1
Højreklik på arkfanen og vælg "Vis Programkode".

Indsæt nedenstående kode

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

ActiveSheet.Shapes("Billede 1").Visible = False
ActiveSheet.Shapes("Billede 2").Visible = False
ActiveSheet.Shapes("Billede 3").Visible = False
Select Case Range("C4")
    Case 1: ActiveSheet.Shapes("Billede 1").Visible = True
    Case 2: ActiveSheet.Shapes("Billede 2").Visible = True
    Case 3: ActiveSheet.Shapes("Billede 3").Visible = True
End Select

End Sub


Hvis dine billeder hedder "Billede 1", "Billede 2" og "Billede 3" så skulle det virke. :0)
Avatar billede jamark Praktikant
21. november 2004 - 18:58 #2
Hvordan navngiver jeg et billede?
Avatar billede sjap Praktikant
21. november 2004 - 19:02 #3
Det gør Excel når du lægger dem ind i arket. Hvis du bruger en engelsk version af Excel så kaldes de Picture i stedet for billede (du kan i øvrigt også bruge Picture i den danske version).

Du kan se navnet på et billede ved at markere det - så står navnet umiddelbart til venstre for formellinien (i det hvide felt lige over kolonne A).
Avatar billede jamark Praktikant
21. november 2004 - 19:11 #4
Det virker godt nok, men det er lidt besværligt! For jeg skal sådan set bruge den samme funktion 108 steder i arket. Så det bliver en lang kode!!!
Avatar billede sjap Praktikant
21. november 2004 - 19:13 #5
Det kan måske gøres kortere. Skal alle billeder aktiveres fra C4?
Avatar billede jamark Praktikant
21. november 2004 - 19:20 #6
De tre billeder fra C4. Tre andre fra C5. Tre andre fra C6 osv.
Avatar billede sjap Praktikant
21. november 2004 - 19:22 #7
Hmm! Er numrene fortløbende? - dvs.

C4 aktiverer billede 1, 2 og 3
C5 aktiverer billede 4, 5 og 6
C6 aktiverer billede 7, 8 og 9
Avatar billede jamark Praktikant
21. november 2004 - 19:24 #8
Jep
Avatar billede sjap Praktikant
21. november 2004 - 19:25 #9
2 min. så har jeg måske noget.
Avatar billede sjap Praktikant
21. november 2004 - 19:30 #10
Prøv lige nedenstående. Jeg har ikke så mange billeder inde, så jeg kan ikke teste om det fungerer helt efter hensigten.

For I = 1 To 3
    ActiveSheet.Shapes("Billede " & I).Visible = False
Next I

For I = 1 To 36
    If 0 < Range("C" & I + 3) And Range("C" & I + 3) <= 3 Then
        ActiveSheet.Shapes("Billede " & ((I - 1) * 3) + Range("C" & I + 3)).Visible = True
    End If
Next I
Avatar billede sjap Praktikant
21. november 2004 - 19:30 #11
Det skal erstatte alt det du havde i sub Worksheet_SelectionChange.
Avatar billede jamark Praktikant
21. november 2004 - 19:34 #12
Af en eller anden grund starter min billednummerering ved 51 i stedet for 1. Kan man lave det om? Eller er det nemmere at ændre koden?
Avatar billede sjap Praktikant
21. november 2004 - 19:37 #13
I koden kan det gøres således:

For i = 51 To 158      'Nummerering starter ved 51
    ActiveSheet.Shapes("Billede " & i).Visible = False
Next i

For i = 1 To 36
    If 0 < Range("C" & i + 3) And Range("C" & i + 3) <= 3 Then
        ActiveSheet.Shapes("Billede " & ((i - 1) * 3) + Range("C" & i + 3) + 51).Visible = True
    End If
Next i
Avatar billede sjap Praktikant
21. november 2004 - 19:38 #14
Hvis det virker, er det vist hurtigere end at skulle ændre på 108 billeder. ;0)
Avatar billede jamark Praktikant
21. november 2004 - 19:47 #15
Jeg prøver med 15 billeder først, så jeg har ændret koden til:


For i = 51 To 65      'Nummerering starter ved 51
    ActiveSheet.Shapes("Billede " & i).Visible = False
Next i

For i = 1 To 5
    If 0 < Range("C" & i + 3) And Range("C" & i + 3) <= 3 Then
        ActiveSheet.Shapes("Billede " & ((i - 1) * 3) + Range("C" & i + 3) + 51).Visible = True
    End If
Next i

Men den melder fejl ved:

ActiveSheet.Shapes("Billede " & ((i - 1) * 3) + Range("C" & i + 3) + 51).Visible = True
Avatar billede sjap Praktikant
21. november 2004 - 19:49 #16
Hvad er fejlen?
Hvad er i?
Hvad står der i Cellen C(i+3)?
Avatar billede jamark Praktikant
21. november 2004 - 19:51 #17
?
Avatar billede sjap Praktikant
21. november 2004 - 19:53 #18
Hvad er det du ikke forstår?
Avatar billede jamark Praktikant
21. november 2004 - 19:58 #19
Hvad du mener med dine spørgsmål.
Avatar billede jamark Praktikant
21. november 2004 - 20:00 #20
(Nu har jeg måske forstået dem alligevel!) Jeg tror i øvrigt det er noget med billede 63-65. De er forsvundet. Kan man finde en oversigt over alle billederne (også dem, der ikke vises) et eller andet sted?
Avatar billede jamark Praktikant
21. november 2004 - 20:03 #21
Hov. Nu virker det måske alligevel.
Avatar billede sjap Praktikant
21. november 2004 - 20:05 #22
Bare sådan uden videre?

Jeg har forsøgt at finde en oversigt over billeder, men er ikke lykkedes (endnu).
Avatar billede jamark Praktikant
21. november 2004 - 20:07 #23
Det virker helt perfekt. Jeg ændrede ikke rigtigt noget, men nu virker det! Tak for hjælpen.
Avatar billede jamark Praktikant
21. november 2004 - 20:07 #24
Hov vent
Avatar billede sjap Praktikant
21. november 2004 - 20:07 #25
:0)
Avatar billede jamark Praktikant
21. november 2004 - 20:08 #26
Kan man springe felterne C16, C17 og C18 over
Avatar billede sjap Praktikant
21. november 2004 - 20:10 #27
Du kan evt. bare skrive 0 eller ingenting, så bliver de sprunget over (eller rettere: så forsøger programmet ikke at gøre noget ved de tilhørende grafer).
Avatar billede jamark Praktikant
21. november 2004 - 20:19 #28
Jeg har lige opdaget en fejl. Når billed 2 skulle vises, bliver billed 1 vist, og når billed 3 skulle vises, bliver billed 2 vist osv.
Avatar billede jamark Praktikant
21. november 2004 - 20:27 #29
Jeg har fundet fejlen. Der stod 51 i stedet for 50 i den sidste funktion, så den rigtige kode er:

For i = 51 To 65      'Nummerering starter ved 51
    ActiveSheet.Shapes("Billede " & i).Visible = False
Next i

For i = 1 To 5
    If 0 < Range("C" & i + 3) And Range("C" & i + 3) <= 3 Then
        ActiveSheet.Shapes("Billede " & ((i - 1) * 3) + Range("C" & i + 3) + 50).Visible = True   
    End If
Next i
Avatar billede sjap Praktikant
21. november 2004 - 20:27 #30
Nåh ja. Der var lige en lille fejl i beregninger af at første billede skal være nr. 51. Prøv med:

ActiveSheet.Shapes("Billede " & ((i - 1) * 3) + Range("C" & i + 3) + 50).Visible = True
Avatar billede sjap Praktikant
21. november 2004 - 20:27 #31
Jamen det kan vi jo kun være frygteligt enige om :0)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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