Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel cambiare immagine su cella al risultato di altra cella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel cambiare immagine su cella al risultato di altra cella

Postdi lavespa » 14/10/16 17:17

Salve a tutti,
allego questo file in cui il codice funziona finchè trova l'immagine nella cartella, ma se manca,
o cancello la selezione in B8 mi dà "Errore di run-time '53': Impossibile trovare il file".
Non avendo conoscenza delle macro potete aiutarmi?

http://www.filedropper.com/prova_2

p.s. le immagini nella prova sono 2 ma a lavoro ultimato saranno circa 20

Grazie in anticipo per il tempo che mi concederete


Excel 2003
lavespa
Newbie
 
Post: 3
Iscritto il: 18/10/14 18:37

Sponsor
 

Re: Excel cambiare immagine su cella al risultato di altra c

Postdi cromagno » 15/10/16 03:47

Ciao,
in realtà restituisce un errore anche se viene modificata una cella qualunque (che non sia B8) all'interno del foglio...

Dovresti aggiungere qualche verifica al codice.
Inoltre, nel caso che il file immagine non sia presente nella cartella, dovresti prevedere cosa usare al suo posto e potresti usare un'immagine del genere (da mettere nella cartella dove si trovano le altre immagini):
Immagine

oppure farti avvisare con un MsgBox (io ho optato per l'immagine allegata sopra).

Il codice diventerebbe:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim image1 As String, image2 As String

If Not Intersect(Target, Range("B8")) Is Nothing And Target <> "" Then
    image1 = Range("e10").Value
    image2 = Range("e21").Value
   
    If Dir(ThisWorkbook.Path & "\paperino\" & image1 & ".jpg") = "" Then
        image1 = "Assente"
    End If
   
    If Dir(ThisWorkbook.Path & "\paperino\" & image2 & ".jpg") = "" Then
        image2 = "Assente"
    End If
   
    Worksheets("Foglio1").image1.Picture = LoadPicture(ThisWorkbook.Path & "\paperino\" & image1 & ".jpg")
    Worksheets("Foglio1").image2.Picture = LoadPicture(ThisWorkbook.Path & "\paperino\" & image2 & ".jpg")
End If

End Sub


Ti riallego il file:
http://www.filedropper.com/prova-immagini
Windows 10 + Office 2016 (ita)
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Avatar utente
cromagno
Utente Junior
 
Post: 21
Iscritto il: 08/10/16 16:33
Località: Sardegna

Re: Excel cambiare immagine su cella al risultato di altra c

Postdi lavespa » 15/10/16 13:07

Ciao Cromagno,

grazie della spiegazione e del file già pronto,
non ho controllato le altre celle, ma sarebbe stato lo stesso, non ho dimestichezza con le macro.

Ho provato il tuo lavoro e funziona (non avevo dubbi) ora però c'è un altro punto da superare, se cancello
il contenuto di B8 le immagini restano bloccate invece dovrebbero togliersi se la cella è vuota.

Come posso modificare?


Grazie ancora
lavespa
Newbie
 
Post: 3
Iscritto il: 18/10/14 18:37

Re: Excel cambiare immagine su cella al risultato di altra c

Postdi cromagno » 15/10/16 15:57

Ciao,
puoi usare lo stesso escamotage di prima, quindi nella cartella delle immagini aggiungerai un file immagine bianco (o come vuoi tu) e gli darai un nome a piacere che userai nel codice nel caso in cui la cella B8 sia vuota (io l'ho chiamato "Blank").

Quindi il codice di prima verrà modificato in questo modo:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim image1 As String, image2 As String

If Not Intersect(Target, Range("B8")) Is Nothing Then
    If Target <> "" Then
        image1 = Range("e10").Value
        image2 = Range("e21").Value
       
        If Dir(ThisWorkbook.Path & "\paperino\" & image1 & ".jpg") = "" Then
            image1 = "Assente"
        End If
       
        If Dir(ThisWorkbook.Path & "\paperino\" & image2 & ".jpg") = "" Then
            image2 = "Assente"
        End If
    Else
        image1 = "Blank"
        image2 = "Blank"
    End If
   
    Worksheets("Foglio1").image1.Picture = LoadPicture(ThisWorkbook.Path & "\paperino\" & image1 & ".jpg")
    Worksheets("Foglio1").image2.Picture = LoadPicture(ThisWorkbook.Path & "\paperino\" & image2 & ".jpg")
End If


File:
http://www.filedropper.com/prova-immagini2
Windows 10 + Office 2016 (ita)
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Avatar utente
cromagno
Utente Junior
 
Post: 21
Iscritto il: 08/10/16 16:33
Località: Sardegna

Re: Excel cambiare immagine su cella al risultato di altra c

Postdi Anthony47 » 17/10/16 01:54

Propongo una piccola variante al metodo di Cromagno, basata su questa Worksheet_Change:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim image1 As String, Image2 As String, imgDir As String
'
imgDir = ThisWorkbook.Path & "\prova2\"         '<<< La directory con le immagini
'
If Not Intersect(Target, Range("B8")) Is Nothing Then   '
    Worksheets("Foglio1").image1.Picture = LoadPicture("") '
    Worksheets("Foglio1").Image2.Picture = LoadPicture("") '
    If Target <> "" And Not IsError(Range("E10")) Then
        On Error Resume Next
        Worksheets("Foglio1").image1.Picture = LoadPicture(imgDir & Range("e10").Value & ".jpg")
        Worksheets("Foglio1").Image2.Picture = LoadPicture(imgDir & Range("e21").Value & ".jpg")
        On Error GoTo 0
    End If
End If
End Sub

In pratica si eliminano le immagini e poi si inseriscono quelle nuove, se sono dichiarate e se sono disponibili.

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel cambiare immagine su cella al risultato di altra c

Postdi lavespa » 17/10/16 13:22

Ciao Cromagno, Ciao Anthony,

scusate il ritardo, problemi di connessione a singhiozzo,
ho provato i vostri lavori e sono semplicemente ottimi

Vi ringrazio per la gentilezza


Saluti a tutti
lavespa
Newbie
 
Post: 3
Iscritto il: 18/10/14 18:37


Torna a Applicazioni Office Windows


Topic correlati a "Excel cambiare immagine su cella al risultato di altra cella":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti