Avatar billede kgndksv Juniormester
21. december 2009 - 21:44 Der er 4 kommentarer og
1 løsning

Hvorfor virker denne Sub ikke?? tilføje billeder ved ændring af celle.

Den sletter bare det billede der allerede er sat ind i arket...


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim shpTemp As Shape, lTop As Long, lTeft As Long, lWidth As Long, lHeight As Long
    If Target.Address = "$D$2" Then
        lTop = Range("C3").Top
        lleft = Range("C3").Left
        lWidth = 50
        lHeight = 50
        ActiveSheet.Pictures.Delete
        Select Case Target
            Case Target.Value = "NO"
              Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\NO-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case Target.Value = "SE"
                Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\SE-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case Target.Value = "DK"
                Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\dk-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case Else
              Exit Sub
        End Select
        Set shpTemp = Nothing
    End If
End Sub
Avatar billede store-morten Ekspert
21. december 2009 - 21:56 #1
Den sletter bare det billede der allerede er sat ind i arket...

måske
Linie 8: ActiveSheet.Pictures.Delete
Avatar billede kgndksv Juniormester
21. december 2009 - 23:18 #2
Hmm... virker ikke, men har lavet den om til en If i stedet:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim shpTemp As Shape, lTop As Long, lTeft As Long, lWidth As Long, lHeight As Long
    If Target.Address = "$D$2" Then
        lTop = Range("C3").Top
        lleft = Range("C3").Left
        lWidth = 61.5
        lHeight = 39
        ActiveSheet.Pictures.Delete
        sti = ThisWorkbook.Path
       
        If Target.Value = "NO" Then
        Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\NO.gif", True, False, lleft, lTop, lWidth, lHeight)
        Else
        If Target.Value = "SE" Then
        Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\SE.gif", True, False, lleft, lTop, lWidth, lHeight)
        Else
        If Target.Value = "DK" Then
        Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\DK.gif", True, False, lleft, lTop, lWidth, lHeight)
        End If
        End If
        End If
        Set shpTemp = Nothing

    End If
End Sub
Avatar billede store-morten Ekspert
21. december 2009 - 23:20 #3
Har leget lidt med den.  :-)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim shpTemp As Shape, lTop As Long, lTeft As Long, lWidth As Long, lHeight As Long
   
    If Target.Address = "$D$2" Then
        lTop = Range("C3").Top
        lleft = Range("C3").Left
        lWidth = 50
        lHeight = 50
        ActiveSheet.Pictures.Delete
            If Target.Value = "NO" Then
                Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\NO-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            ElseIf Target.Value = "SE" Then
                Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\SE-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            ElseIf Target.Value = "DK" Then
                Set shpTemp = ActiveSheet.Shapes.AddPicture("C:\dk-flag.gif", True, False, lleft, lTop, lWidth, lHeight)
            Else
        Exit Sub
    Set shpTemp = Nothing
            End If
            End If
End Sub
Avatar billede kgndksv Juniormester
21. december 2009 - 23:33 #4
Hej Store-morten

som du kan se tænkte jeg det samme, men hvorfor tror du ikke den virker med Select Case? Det er som om den ikke kan genkende værdierne "DK", "SE" og  "NO" når jeg sammenligner target.value...??

Men tak for hjælpen i hvert fald!
Avatar billede store-morten Ekspert
22. december 2009 - 01:31 #5
Hej.

Det var netop "Target.Value =" der var fejlen :-)
Slettet så det bliver: Case "NO" - Case "SE" - Case "DK"

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim shpTemp As Shape, lTop As Long, lTeft As Long, lWidth As Long, lHeight As Long
    If Target.Address = "$D$2" Then
        lTop = Range("C3").Top
        lleft = Range("C3").Left
        lWidth = 50
        lHeight = 50
        ActiveSheet.Pictures.Delete
        sti = ThisWorkbook.Path
        Select Case Target
            Case "NO"
              Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\NO.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case "SE"
                Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\SE.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case "DK"
                Set shpTemp = ActiveSheet.Shapes.AddPicture(sti & "\DK.gif", True, False, lleft, lTop, lWidth, lHeight)
            Case Else
              Exit Sub
        End Select
        Set shpTemp = Nothing
    End If
End Sub


Også er det vist sengetid ;-)
  Morten
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