Volevo avere quindi una macro che mi "aumentasse" le dimensioni del
commento, in particolare mi interessa quando il commento lo visualizzo
passando sopra il triangolino rosso. Se fosse possibile, poi, vorrei che in
fase di visualizzazione il commento fosse visibile completamente e non, come
succede quando la cella è vicina al bordo in alto o in basso, che una parte
del commento sparisce al di sopra o al di sotto del bordo e quindi non è
visibile.
Preciso che NON desidero aumentare "manualmente" ogni singolo commento con
Formato commento > Dimensioni > Altezza e Larghezza oppure trascinando con
il cursore il bordo del commento.
Preciso inoltre che NON voglio cambiare le "opzioni generali dei commenti"
su tutti i tooltip di tutti i programmi e cioè non voglio andare a
modificare da "pannello di controllo" perché queste modifiche alle
dimensioni standard varrebbero per TUTTE le applicazioni di Office mentre
invece questa esigenza di avere maggior dimensioni è limitata esclusivamente
e solo a questo file Excel e non ad altri o ad altre applicazioni di Office.
Grazie di tutto
Paolo
P.S. credo che l'unica soluzione sia la macro, ma se ne esistono altre le
seguirò volentieri, sono sempre pronto ad imparare ;-))
> In un particolare file Excel ho la necessità di avere dei
> "commenti" che abbiano dimensioni maggiori rispetto a quelle di
> default-standard, pertanto ho bisogno di una macro.
[...]
Penso che qui troverai ciò che fa al caso tuo.
http://www.contextures.com/xlcomments03.html#Resize
Ciao
--
...saoche[at]despammed[dot]com...
Ciao Saoche,
ho inserito questa macro dal link che mi hai indicato, e funziona anche se
ho due piccoli problemi:
1) non riesco ad aumentare l'Altezza e la Lunghezza (ho ad esempio cambiato
If .Shape.Width > 300 Then prima da "300" a "30" e poi a "3000" ma non si
ingrandisce) cosa devo cambiare per avere una dimensione del commento pari a
circa metà schermo?
2) come posso mantenere sempre in esecuzione la macro, perchè se io la
inserisco in visualizza codice, poi sono costretto "manualmente" ad andare
in Strumento > Macro > Esegui
Paolo
Sub Comments_AutoSize()
'posted by Dana DeLouis 2000-09-16
Dim MyComments As Comment
Dim lArea As Long
For Each MyComments In ActiveSheet.Comments
With MyComments
.Shape.TextFrame.AutoSize = True
If .Shape.Width > 300 Then
lArea = .Shape.Width * .Shape.Height
.Shape.Width = 200
' An adjustment factor of 1.1 seems to work ok.
.Shape.Height = (lArea / 200) * 1.1
End If
End With
Next ' comment
End Sub
[...]
> ho inserito questa macro dal link che mi hai indicato, e funziona
> anche se ho due piccoli problemi:
> 1) non riesco ad aumentare l'Altezza e la Lunghezza (ho ad esempio
> cambiato If .Shape.Width > 300 Then prima da "300" a "30" e poi a
> "3000" ma non si ingrandisce) cosa devo cambiare per avere una
> dimensione del commento pari a circa metà schermo?
La macro Comments_AutoSize allinea il testo e ridimensiona il commento
se la sua larghezza è maggiore di un certo valore prefissato.
Per fare ciò che vuoi tu bisogna apportare qualche variazione.
Sub Commenti_Ridimensiona()
Dim MyComments As Comment
For Each MyComments In ActiveSheet.Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
End Sub
> 2) come posso mantenere sempre in esecuzione la macro, perchè se
> io la inserisco in visualizza codice, poi sono costretto
> "manualmente" ad andare in Strumento > Macro > Esegui
[...]
Non devi tenere sempre in esecuzione la macro, la devi lanciare dopo
aver inserito tutti i commenti o comunque dopo averne aggiunto
qualcuno.
Facci sapere.
quando mi parli di "variazione"
> Per fare ciň che vuoi tu bisogna apportare qualche variazione.
se capisco bene, copio SOLO la macro che mi hai scritto e basta, lasciando
perdere quella che avevo inserito in precedenza dal link che mi avevi
indicato, vero?
Sub Commenti_Ridimensiona()
Dim MyComments As Comment
For Each MyComments In ActiveSheet.Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
End Sub
> > 2) come posso mantenere sempre in esecuzione la macro, perchč se
> > io la inserisco in visualizza codice, poi sono costretto
> > "manualmente" ad andare in Strumento > Macro > Esegui
> [...]
>
> Non devi tenere sempre in esecuzione la macro, la devi lanciare dopo
> aver inserito tutti i commenti o comunque dopo averne aggiunto
> qualcuno.
Ma "non devo" o "non posso" tenere sempre in esecuzione la macro? Ti
chiedevo questo perchč sarebbe molto piů comodo averla sempre in esecuzione,
anche se non so se potrei avere degli inconvenienti.
grazie
PaoloB
P.S. dopo il tuo post nel mio thread "Elenco completo colori" del 22/7/04 si
č scoperto che i colori anche nel formato > cella > personalizzato sono 56!!
[...]
> se capisco bene, copio SOLO la macro che mi hai scritto e basta,
> lasciando perdere quella che avevo inserito in precedenza dal link
> che mi avevi indicato, vero?
Si, hai capito bene.
> Ma "non devo" o "non posso" tenere sempre in esecuzione la macro?
Quando una macro è in esecuzione il foglio di calcolo non è
attivo, quindi non puoi.
> Ti chiedevo questo perchè sarebbe molto più comodo averla sempre
> in esecuzione, anche se non so se potrei avere degli
> inconvenienti.
[...]
Puoi sempre associare la macro ad una combinazione di tasti o ad un
bottone.
Ciao.
Ciao Saoche,
grazie mille per le utili notazioni, solo un'ultima domanda. Come potrei
"integrare" la macro in modo che quando apro il file si esegua
automaticamente? In questo modo avrei, quantomeno, già ingranditi tutti i
commenti già presenti nel file (ovviamente per quei commenti che poi dovessi
aggiungere dovrei fare una esecuzione manuale della macro ma poco male).
Inoltre quando dovessi "integrare" la macro in modo che quando apro il file
si esegua automaticamente tieni presente che i fogli sono 4 di cui il
foglio2, 3 e 4 sono "collegati" (incolla speciale) col foglio1. Te l'ho
precisato perchè non so bene se per far "eseguire automaticamente" una macro
all'apertura del file sia bastevole inserire la macro in tutti i quattro
fogli o che altro
Sub Commenti_Ridimensiona()
Dim MyComments As Comment
For Each MyComments In ActiveSheet.Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
End Sub
grazie ancora Paolo
> Ciao Saoche,
>
> grazie mille per le utili notazioni, solo un'ultima domanda. Come potrei
> "integrare" la macro in modo che quando apro il file si esegua
> automaticamente?
IMHO ha più senso che la macro venga eseguita automaticamente alla
chiusura o al salvataggio, piuttosto che all'apertura. Per farla
eseguire al momento del salvataggio puoi sfruttare l'evento BeforeSave
dell'oggetto Workbook.
--
Tiziano Marmiroli
Microsoft MVP - Office
> Come potrei
> "integrare" la macro in modo che quando apro il file si esegua
> automaticamente? In questo modo avrei, quantomeno, già ingranditi tutti i
> commenti già presenti nel file (ovviamente per quei commenti che poi
dovessi
> aggiungere dovrei fare una esecuzione manuale della macro ma poco male).
>
Visual Basic Editor
Doppio click su ThisWorkbook in Progetto - VBAProject
In alto a Sinistra nella ComboBox dove trovi Generale seleziona Workbook.
Inserisci:
Call Nome_della_tua_macro
all'interno dell'evento Workbook_Open()
> Inoltre quando dovessi "integrare" la macro in modo che quando apro il
file
> si esegua automaticamente tieni presente che i fogli sono 4 di cui il
> foglio2, 3 e 4 sono "collegati" (incolla speciale) col foglio1. Te l'ho
> precisato perchè non so bene se per far "eseguire automaticamente" una
macro
> all'apertura del file sia bastevole inserire la macro in tutti i quattro
> fogli o che altro
>
Private Sub Workbook_Open()
Dim y
Dim x As Integer
Dim MyComments As Comment
x = Worksheets.Count
For y = 1 To x
For Each MyComments In Worksheets(y).Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
End Sub
--
----------------------------
Mauro Gamberini
ho inserito la macro (che in basso ritrascrivo) in visualizza cadice poi ho
salvato il file e l'ho nuovamente aperto ma NON funziona.
La cosa poi strana e che se vado su strumenti > macro > non mio compare
alcuna macro e quindi non posso neppure eseguirla manualmente.
Quanto invece se sia meglio, come suggerito da Tiziano (che saluto),
eseguire alla fine la macro piuttosto che all'apertura, il motivo mi sfugge
e mi spiego. L'esigenza è di avere le dimenioni dei commenti maggiori di
quelle standard in modo da poter vedere tutto quanto vi ho scritto. Ora è
chiaro che se le macro fosse in grado di "espandere definitivamente" le
dimensioni del commento allora mi potrebbe andare bene eseguire la macro
alla fine in modo di avere già, alla prossima volta che andrò ad aprire il
file, il commento già espanso. Ma da quanto ho capito l'espansione delle
dimensioni dell'area del commento non è definitiva e quindi alla volta
successiva che andrò ad aprire il file se la macro non viene eseguita le
dimensioni ritornano quelle standard (piccole), è cosi? Ecco perchè
immaginavo di eseguire la macro con l'apertura del file in modo da avere
immediatamente, quantomeno per quei commenti già presenti, l'area di
dimensioni molto più grande. Ma forse mi potrete chiarire il motivi
dell'esecuzione al termine della sessione.
Grazie in anticipo Paolo
Private Sub Workbook_Open()
Dim y
Dim x As Integer
Dim MyComments As Comment
x = Worksheets.Count
For y = 1 To x
For Each MyComments In Worksheets(y).Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
Next
End Sub
"Mauro Gamberini" <maur...@RIMUOVEREaliceposta.it> ha scritto nel messaggio
news:%23RdjQHv...@tk2msftngp13.phx.gbl...
A me, Excel 2003, XP, 2000 funziona.
> La cosa poi strana e che se vado su strumenti > macro > non mio compare
> alcuna macro e quindi non posso neppure eseguirla manualmente.
>
Nulla di strano. Workbook_Open() non è una macro, ma un
evento, quindi non puoi visualizzarlo da Strumenti-->Macro.
--
----------------------------
Mauro Gamberini
Visual Basic Editor
Doppio click su ThisWorkbook in Progetto - VBAProject
In alto a Sinistra nella ComboBox dove trovi Generale seleziona Workbook
Sostituisci:
Private Sub Workbook_Open()
End Sub
Con il codice:
Private Sub Workbook_Open()
Dim y
Dim x As Integer
Dim MyComments As Comment
x = Worksheets.Count
For y = 1 To x
For Each MyComments In Worksheets(y).Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
Next
End Sub
D_E_V_E funzionare...
--
----------------------------
Mauro Gamberini
Ciao Mauro,
si la protezione č media
> Al via accetta la macro.
>
> A me, Excel 2003, XP, 2000 funziona.
anch'io ho XP ma purtroppo non funziona ma, caro Mauro, riprovo a
trascrivere tutta la procedura che seguo:
inserisco la macro in visualizza codice
inserisco dei commenti
chiudo e salvo il file
apro il file e mi compare la maschera di avviso di protezione e clicco su
"attiva macro"
mi pongo con il cursore sopra il triangolino rosso e mi si visualizza il
commento in........dimensioni standard e non grandi, sic!!
la macro che inserisco č
Private Sub Workbook_Open()
Dim y
Dim x As Integer
Dim MyComments As Comment
x = Worksheets.Count
For y = 1 To x
For Each MyComments In Worksheets(y).Comments
MyComments.Shape.Width = 400
MyComments.Shape.Height = 300
Next
Next
End Sub
Infine quanto al dubbio se attivare la macro all'inizio o alla fine, sei
sempre dello stesso avviso?
Un grazie anticipato Paolo
Provata da me Funziona
ciao e grazie anche da parte mia
Bruno
--
Ugo Foscolo
"Io non so né perché venni al mondo, né come, né cosa sia il mondo, né
cosa io stesso sia. E s'io corro ad investigarlo, mi ritorno confuso
d'una ignoranza sempre più spaventosa." Ciao Bruno
Ciao Mauro,
il mio post precedente si era incrociato con il tuo.
In effetti ora funziona!! grazie mille.
Non capisco perché non era sufficiente inserire "semplicemente" la macro in
visualizza codice ma è necessario inserirla nel Workbook, in ogni caso
questo è il metodo e devo studiarmelo.......!!!
Quanto invece ad eseguire la macro all'inizio o alla fine sei sempre della
stessa opinione oppure concordi con le mie osservazioni?
Potremmo "tagliare la testa al toro" e potresti allora - cortesemente -
integrare la macro in modo che ANCHE salvi alla fine quando chiudo il file?
Paolo
Terra terra diciamo che puoi *mettere codice* nel Workbook(cartella),
nel Worksheet(foglio), nelle Form, nei Moduli, nei Moduli di classe.
Se fai doppio click sul Foglio1 in Progetto - VBAProject nell'editor del
VBA,
in alto a sx hai il ComboBox con Generale. Click e seleziona Worksheet.
Il Worksheet ha come evento predefinito SelectionChange() che si verifica
ogni volta tu cambi la selezione sul foglio. Prova ad inserire il solito
MessageBox:
MsgBox("Ciao ciao")
all'interno dell'evento SelectionChange().
Adesso vai in Excel e semplicemente spostati da una cella all'altra(stai
cambiando
le selezione sul foglio).
Ti faccio notare come il Worksheet abbia l'evento Activate() che si verifica
al momento dell'attivazione del foglio(un po' l'equivalente di
Workbook_Open()...),
l'evento Change() che si verifica quando cambi qualcosa sul foglio(ad
esempio aggiungi o togli
testo o numeri e poi confermi) e l'evento Deactivate() che si verifica
quando
selezioni un altro foglio.
Giocaci un po'.
Adesso basta, altrimenti ci sgridano.
> Quanto invece ad eseguire la macro all'inizio o alla fine sei sempre della
> stessa opinione oppure concordi con le mie osservazioni?
>
Tu adesso sai che puoi mettere il tuo codice in tre eventi.
Fai alcune prove e decidi in base ai tuoi riscontri.
--
----------------------------
Mauro Gamberini
Ciao Mauro,
ti ringrazio moltissimo per la lunga e dettagliata spiegazione, ora vado a
giocarci un po!! ;-)
PaoloB
Ciao Mauro,
dopo i meritati complimenti ora ti devo fare un piccolo appunto:
non cambiare mai l'oggetto di un post perché altrimenti rendi difficile la
lettura del thread, specie per chi farà la ricerca su Google
PaoloB
P.S. ho pensato di fare io la tirata d'orecchie così è meno dolorosa ;-))
--
----------------------------
Mauro Gamberini
Ciao Mauro,
guarda che scherzavo!! anche se è una buona regola
un saluto
Paolo
[...]
> dopo i meritati complimenti ora ti devo fare un piccolo appunto:
>
> non cambiare mai l'oggetto di un post perché altrimenti rendi
> difficile la lettura del thread, specie per chi farà la ricerca su
> Google
[...]
E' giusto, mi associo.
Ciao Mauro, prova a dare un'occhiata qui
Come puoi constatare tu stesso, il thread su google si esaurisce nel
momento in cui hai modificato il subject:, questo significa che chi
effettuerà delle ricerche su google non potrà leggere il thread
completo, oppure vuole dire che questo thread non potrà essere
selezionato come thread interessante per il prossimo numero di
it.office, o, ancora, che quando si presenterà un problema analogo non
si potrà rimandare a quel thread.
Se vogliamo che questo ng sia facilmente consultabile, alcune regole
bisogna che le rispettiamo.
Ciao
--
----------------------------
Mauro Gamberini