Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rendere variabile un'immagine cui è assegata macro

40 views
Skip to first unread message

Swap

unread,
Jan 12, 2010, 5:50:13 PM1/12/10
to
Ciao a tutti,

vorrei sapere se ᅵ possibile far sᅵ che l'utente del foglio excel
possa, ad es tramite menu a discesa (casella combinata?), modificare
l'immagine (es. a caso: un cane, un gatto o un cavallo) a cui ᅵ
assegnata una macro (sempre la stessa).

Lo scopo ᅵ solo estetico, esiste una soluzione semplice per farlo?
Grazie.
Swap.


Mauro Gamberini

unread,
Jan 13, 2010, 3:34:12 AM1/13/10
to
> vorrei sapere se � possibile far s� che l'utente del foglio excel possa,
> ad es tramite menu a discesa (casella combinata?), modificare l'immagine
> (es. a caso: un cane, un gatto o un cavallo) a cui � assegnata una macro
> (sempre la stessa).
>

Dove si trova questa immmagine?
Sul foglio?

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


Swap

unread,
Jan 14, 2010, 2:09:08 PM1/14/10
to
On 13/01/2010, 9.34.12, Mauro Gamberini in
<eGNPwsCl...@TK2MSFTNGP04.phx.gbl> wrote:
>> vorrei sapere se ᅵ possibile far sᅵ che l'utente del foglio excel possa, ad
>> es tramite menu a discesa (casella combinata?), modificare l'immagine (es.
>> a caso: un cane, un gatto o un cavallo) a cui ᅵ assegnata una macro (sempre
>> la stessa).
>>
>
> Dove si trova questa immmagine?
> Sul foglio?

Scusa per la risposta tardiva, non ho avuto accesso al NG.
Sᅵ, l'immagine ᅵ sul foglio, ma non sono sicuro di capire dove altro
potrebbe essere.


Mauro Gamberini

unread,
Jan 15, 2010, 3:54:47 AM1/15/10
to
>> Dove si trova questa immmagine?
>> Sul foglio?
>
> Scusa per la risposta tardiva, non ho avuto accesso al NG.
> Sᅵ, l'immagine ᅵ sul foglio, ma non sono sicuro di capire dove altro
> potrebbe essere.
>

Inserisci tre immagini, uguali per dimensione,
nel foglio.

Excel, se sono le uniche tre immagini,
darᅵ loro i seguenti nomi:

Immagine 1
Immagine 2
Immagine 3

Adesso, nell'editor del vb(ALT+F11)
inseriamo una UserForm: Inserisci-->UserForm
Nella UserForm mettiamo una ComboBox.
Questo il codice della UserForm:

'evento scatenato all'avvio della UserForm
Private Sub UserForm_Initialize()
'metto i nomi delle mie immagini
'nella ComboBox
With Me.ComboBox1
.AddItem ("Immagine 1")
.AddItem ("Immagine 2")
.AddItem ("Immagine 3")
End With
End Sub

Private Sub ComboBox1_Click()

'dichiaro le variabili
Dim wk As Workbook
Dim sh As Worksheet
Dim sp As Shape
'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento al foglio
'che contiene le immagini
'(qui Foglio1)
With wk
Set sh = .Worksheets("Foglio1")
End With

With sh
'ciclo le immagini
For Each sp In .Shapes
'nascondo le immagini con il nome
'diverso da quell selezionato nella ComboBox
If sp.Name <> Me.ComboBox1.Text Then
sp.Visible = False
Else
'visualizzo quella con il
'nome uguale a quello selezionato
'nella ComboBox
sp.Visible = True
End If
Next
End With

'Set a Nothing delle variabili oggetto
Set sp = Nothing
Set sh = Nothing
Set wk = Nothing

End Sub

In un modulo standard(Inserisci-->Modulo)
mettiamo questo codice:

Public Sub m()
UserForm1.Show
End Sub

Public Sub mMacro()
MsgBox "Ciao"
End Sub

ALT+F11 e torniamo in Excel.
ALT+F8 e visualizziamo le macro
disponibili nel file.
Seleziona: m
Opzioni
assegna un tasto di scelta rapida, esempio: a
(questo serve per richiamare la UserForm al bisogno)
Seleziona la prima immagine.
Click sopra con il tasto dx del mouse
Seleziona: Assegna macro
Assegna la macro mMacro
Ripeti la stessa operazione com le altre immagini.

Posiziona le tre immagini una sopra all'altra.

CTRL+a e visualizzi la UserForm.
Seleziona un'immmagine.
Click sull'immagine selezionata.

Qui trovi il file utilizzato per l'esempio:
http://www.maurogsc.eu/esemping10/cambiaimmagine.zip

Per problemi, per favore resta sempre in
questo thread.

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads/

Mauro Gamberini

unread,
Jan 15, 2010, 4:45:40 AM1/15/10
to
<cut>
Meglio questo come codice per la UserForm.
recupera i nomi delle immmagini(shapes) senza
doverli sapere anticipatamente:

'dichiaro vle variabili
'visibili da tutta la UserForm


Dim wk As Workbook
Dim sh As Worksheet
Dim sp As Shape

'evento scatenato all'avvio della UserForm
Private Sub UserForm_Initialize()

'metto un riferimento al workbook


'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento al foglio
'che contiene le immagini
'(qui Foglio1)
With wk
Set sh = .Worksheets("Foglio1")
End With

'metto i nomi delle mie immagini
'nella ComboBox
With Me.ComboBox1
For Each sp In sh.Shapes
.AddItem sp.Name
Next
End With

End Sub

Private Sub ComboBox1_Click()

With sh


'ciclo le immagini
For Each sp In .Shapes

sp.Visible = True


'nascondo le immagini con il nome
'diverso da quell selezionato nella ComboBox
If sp.Name <> Me.ComboBox1.Text Then
sp.Visible = False
Else
'visualizzo quella con il
'nome uguale a quello selezionato
'nella ComboBox
sp.Visible = True
End If
Next
End With

End Sub

'evento scatenato alla distruzione della UserForm
Private Sub UserForm_Terminate()


'Set a Nothing delle variabili oggetto
Set sp = Nothing
Set sh = Nothing
Set wk = Nothing
End Sub

--

Swap

unread,
Jan 17, 2010, 6:24:47 AM1/17/10
to
On 15/01/2010, 10.45.40, Mauro Gamberini in
<OYbIGecl...@TK2MSFTNGP06.phx.gbl> wrote:
> <cut>
> Meglio questo come codice per la UserForm.
> recupera i nomi delle immmagini(shapes) senza
> doverli sapere anticipatamente:
[CUT]

Grazie mille, persino l'esempio giᅵ fatto da scaricare!
Davvero gentilissimo.

Avrei una domanda, secondo te potrei ottenere un effetto simile
utilizzando una Casella combinata di tipo modulo, non una userform, +
una macro sull'evento change della cella che essa controllerebbe?
Lo chiedo perchᅵ, non essendo pratico degli userform, non ne so
valutare i pro/contro.
Grazie.


Mauro Gamberini

unread,
Jan 18, 2010, 2:55:35 AM1/18/10
to
> Grazie mille, persino l'esempio gi� fatto da scaricare!
> Davvero gentilissimo.
>

Grazie a te per il gentile riscontro.

> Avrei una domanda, secondo te potrei ottenere un effetto simile
> utilizzando una Casella combinata di tipo modulo, non una userform, + una
> macro sull'evento change della cella che essa controllerebbe?

> Lo chiedo perch�, non essendo pratico degli userform, non ne so valutare i
> pro/contro.
>

Non utilizzo mai i moduli,
sono(quasi) ingestibili.
Al limite si potrebbe utilizzare
una ComboBox direttamente sul
foglio.
Visualizza-->Barre degli stumenti-->Strumenti di controllo
Questi oggetti ActiveX si comportano nel 99%
dei casi come gli omonimi controlli che hai sulla UserForm
e sono pi� gestibili rispetto ai controlli modulo.

Mauro Gamberini

unread,
Jan 18, 2010, 4:39:07 AM1/18/10
to
<cut>

Prova ad aggiungere una ComboBox
(ActiveX ComboBox) e una serie di immagini
al Foglio1.

Questo il codice del modulo *DEL FOGLIO*
dove hai ComboBox e immagini:


'evento scatenato alla selezione del foglio
Private Sub Worksheet_Activate()
'dichiaro le variabili
Dim sp As Shape
With Me.ComboBox1
'pulisco la ComboBox
.Clear
'ciclo le Shapes
For Each sp In Me.Shapes
'se � una Shape immagine
If sp.Type = CStr(13) Then
'le aggiungo alla ComboBox
.AddItem sp.Name


End If
Next
End With

'Set a Nothing della variabile oggetto
Set sp = Nothing
End Sub

'evento scatenato al click sulla ComboBox


Private Sub ComboBox1_Click()
'dichiaro le variabili

Dim sp As Shape
With Me


'ciclo le immagini
For Each sp In .Shapes

'nascondo le immagini con il nome
'diverso da quell selezionato nella ComboBox
If sp.Name <> Me.ComboBox1.Text Then

'se � una Shape immagine
If sp.Type = 13 Then
'la nascondo
sp.Visible = False
End If


Else
'visualizzo quella con il
'nome uguale a quello selezionato
'nella ComboBox
sp.Visible = True
End If
Next
End With

'Set a Nothing della variabile oggetto
Set sp = Nothing
End Sub

Swap

unread,
Jan 18, 2010, 3:10:04 PM1/18/10
to
On 18/01/2010, 10.39.07, Mauro Gamberini in
<e0CCgICm...@TK2MSFTNGP02.phx.gbl> wrote:
> <cut>
>
> Prova ad aggiungere una ComboBox
> (ActiveX ComboBox) e una serie di immagini
> al Foglio1.
>
> Questo il codice del modulo *DEL FOGLIO*
> dove hai ComboBox e immagini:
>
[CUT]

Cosᅵ ᅵ esattamente come l'avrei voluta, grazie di nuovo.
Ciao


Mauro Gamberini

unread,
Jan 19, 2010, 3:16:23 AM1/19/10
to
> Cos� � esattamente come l'avrei voluta, grazie di nuovo.
>

Grazie a te per il riscontro
e buon lavoro.

0 new messages