ho un file di excel che contiene il riassunto di una situazione dei reclami.
Esso contiene una serie di righe, in cui ogni riga rappresenta un reclamo,
ed una serie di colonne con tutti i dati.
Un collega ha aggiunto una colonna, andando ad incollare una serie di foto
(una per riga), per meglio descrivere le cose.
Le foto sono state ridotte di molto (12%) dell'originale per non stravolgere
troppo l'aspetto della tabella.
A quel punto ho aggiunto di fianco ad ogni foto, sul foglio di excel, una
serie di Option button collegati e pensavo di fare aprire una userform con
dentro una copia in grandezza naturale della foto ed un tasto chiudi per
uscire.
Mentre cliccando da un option button all'altro pensavo di poter cambiare al
volo la foto ingrandita, visto che posso associare il codice di ciascun
option button alla relativa foto (nomi foto: Immagine n)
Primo problema
ogni volta che faccio una copia la nuova foto ingrandita prende un
progressivo nuovo e sempre crescente e quindi non ho mai lo stesso nome
Secondo problema
come incollo la copia della foto così generata ed opportunamente ingrandita
dentro la user form?
Grazie per i consigli.
Saluti
Alberto G.
Ciao Alberto G., prova :
1 - Poniamo che:
NomeFoto = Immagine 5
Altezza = 1,5
Larghezza=2,5
2 - Inserisci uno SpinButton1
Pulsante ds mouse su questo pulsante per Visualizzare codice
a) LinkedCell = Foglio1!C44 <<< cambiare a piacere
b) Nel riquadro codice incolla :
Private Sub SpinButton1_Change()
Dim mFattore as Integer
mFattore = [c44].Value <<< cambiare come sopra
ActiveSheet.Shapes("Immagine 5").Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 44 * mFattore
Selection.ShapeRange.Width = 88 * (mFattore / 1.3)
[a1].Select
End Sub
E così via per tutte le altre.
Ha funzionato nel passato ma adesso non l'ho provata,
fai sapere se può andare.
Ciao
Pippo Coco
=============
=============
Oltre all'ottimo suggerimento dal
grande Poeta, prova:
- Nel foglio inserisci dei controlli Image,
dagli strumenti di controllo
(non preoccuparti con le suedimensioni)
- Fai click dx per aprire finistrina delle proprieta' |
Proprieta': Picture | Seleziona un imagine
In un modulo standard (vedi di sotto),
alla testa del modulo, e prima di qualsiasi
altro codice, incolla la seguente routine per
aggiornare le proprieta' dei tuoi controlli
Image:
'===========>>
Option Explicit
Const sAltezza As Double = 100 '<<=== da CAMBIARE
Const slarghezza As Double = 100 '<<=== da CAMBIARE
'-------------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim oleObj As OLEObject
Set WB = Workbooks("Pippo.xls") ' <<=== da CAMBIARE
Set SH = WB.Sheets("Foglio2") ' <<=== da CAMBIARE
For Each oleObj In SH.OLEObjects
With oleObj
If .progID = "Forms.Image.1" Then
.Height = sAltezza / 3
.Width = slarghezza / 3
.Object.PictureSizeMode = _
fmPictureSizeModeStretch
End If
End With
Next oleObj
End Sub
'<<===========
Per utilizzare questa routine:
Alt-F11 per aprire l'Editor di VBA
Menu | Inserisci | Modulo
Incolla il suddetto codice
Alt-F11 per tornare in Excel
Alt-F8
Seleziona "Tester"
Esegui
Nel modulo del foglio (vedi di sotto),
incolla le seguente routine:
'===========>>
Option Explicit
'-------------->>
Private Sub Image1_Click()
Call ResizePic(Image1)
End Sub
'-------------->>
Private Sub Image2_Click()
Call ResizePic(Image2)
End Sub
'-------------->>
Private Sub Image3_Click()
Call ResizePic(Image3)
End Sub
'-------------->>
Private Sub Image4_Click()
Call ResizePic(Image4)
End Sub
'-------------->>
Private Sub Image5_Click()
Call ResizePic(Image5)
End Sub
'-------------->>
Private Sub ResizePic(myPic As Image)
Dim oleObj As OLEObject
For Each oleObj In Me.OLEObjects
With oleObj
If .progID = "Forms.Image.1" Then
If Not .Name = myPic.Name Then
.Height = sAltezza / 3
.Width = slarghezza / 3
End If
End If
End With
Next oleObj
With myPic
If Abs(.Height - sAltezza) < 10 Then
.Height = sAltezza / 3
.Width = slarghezza / 3
Else
.Height = sAltezza
.Width = slarghezza
End If
End With
End Sub
'<<===========
Con il tasto destro del mouse fai click
sulla linguetta del foglio, scegli
"Visualizza codice" e nella finestra del
codice incolla la routine.Alt-F11 per
tornare in Excel
Salva il file.
Ora, tutti le imagini sono di dimensioni
ridotti. In risposta ad un click, l'immagine
sarà ingrandetta; cliccando poi su un'altra
immagine, l'immagine precedente sarà
ridotta e la nuova immagine sarà
ingrandetta.
---
Regards.
Norman
Ciao Norman,
ho seguito attentamente le tue istruzioni, mi da un messaggio di errore con
scritto:
Errore di compilazione: variabile non definita.
Il VBA si apre sul foglio1, con l'istruzione
Private Sub ResizePic(myPic As Image) colorata in giallo (passo in cui si è
fermato)
e con il nome sAltezza evidenziato in blu (quindi la variabile a cui si
riferisce)
Ma non era dichiarata come Const?
Perchè la vede come Variabile?
Saluti e grazie
Alberto G.
Norman, sono stato precipitoso nel messaggiare
Se clicco sulla foto, l'errore è quello detto prima, se faccio Alt-F8,
esegui, le ingrandisce immediatamente entrambe
Alberto G.
=============
ho seguito attentamente le tue istruzioni, mi da un messaggio di errore con
scritto:
Errore di compilazione: variabile non definita.
Il VBA si apre sul foglio1, con l'istruzione
Private Sub ResizePic(myPic As Image) colorata in giallo (passo in cui si è
fermato)
e con il nome sAltezza evidenziato in blu (quindi la variabile a cui si
riferisce)
Ma non era dichiarata come Const?
Perchè la vede come Variabile?
- - - - - -
Norman, sono stato precipitoso nel messaggiare
Se clicco sulla foto, l'errore è quello detto prima, se faccio Alt-F8,
esegui, le ingrandisce immediatamente entrambe
=============
Nel mio workbook di prova, avevo
dichiarito le variabile sAltezza e
sLarghezza alla testa del modulo del
foglio; al momento in cui postò la mia
risposta, avevo deciso di spostare le
dicichiarazioni in un modulo standard.
Quindi, anziche':
> Option Explicit
> Const sAltezza As Double = 100 '<<=== da CAMBIARE
> Const slarghezza As Double = 100 '<<=== da CAMBIARE
avrei dovuto suggerire:
Public Const sAltezza As Double = 100 '<<=== da CAMBIARE
Public Const sLarghezza As Double = 100 '<<=== da CAMBIARE
Se dovessi avere ancora un problema,
potrei mandarti il mio file di prova.
---
Regards.
Norman
Norman,
immaginavo qualcosa del genere. Adesso tutto a posto. Lo sto adattando alle
mie esigenze.
Se arriverò ad un vicolo cieco tornerò a postare sul NG.
Per intanto grazie ancora.
Alberto G.