| Selezione oggetto in un foglio
protetto di Ricky53 |
Ho un altro problema che vi espongo. su un
foglio protetto ho vari oggetti (ad esempio shape) ad ognuno è
associata la stessa macro. vorrei - facendo click con il mouse -
riconoscere l'oggetto ed eseguire opportune istruzioni. e' simile al
caso delle forme che mi ha risolto big però qui il foglio è protetto
e non ho nessuna forma selezionata perchè è l'utilizzatore che fa
"click" con il mouse su un oggetto invece che su un altro.
ecco la mia domanda: è possibile individuare il nome
dell'oggetto sul quale ho fatto click con il mouse (essendo il
foglio volutamente protetto non si può effettuare una selezione
sull'oggetto ma solo "click")?
grazie ricky53 |
|
| di Big ronnie |
Ciao ricky,essendo la macro uguale per tutte le
forme,assegnale un argomento che corrisponderà al nome della forma
su cui clicchi.
|
|
| Selezione oggetto in un foglio
protetto di Ricky53 |
Grazie per la tua risposta, ma e' quello che già
faccio ma non mi piace perchè se cancello delle forme sono costretto
a modificare linee di codice per passare il valore della forma nella
chiamata alla macro. inoltre io riutilizzo lo stesso schema in altri
fogli per altre applicazioni e mi cambia sia il numero che il nome
delle forme presenti nel file: sono dei test di conoscenza di varie
materie per le scuole medie superiori (storia, geografia,
segnaletica stradale, ecc.). preferirei automatizzare il tutto
senza dover intervenire manualmente nel codice. e' possibile?
in sostanza mi serve sapere che nome ha la forma sulla quale ho
fatto click ma non conosco la sintassi. big sono sicuro che mi
troverai una soluzione. ciao, ricky53
|
|
| Ciao ricky di Big
ronnie |
La sintassi dovrebbe essere questa:
sheets(1).shapes(1).name |
|
| Selezione oggetto in un foglio
protetto di Ricky53 |
Ma come scrivo che è sta fatto click su una
qualunque, tu mi proponi in "sheets(1).shapes(1).name" la prima ma
io non so se il click è stato fatto sulla prima. ossia nel ciclo
"for i = 1 to max_numero_forme" l'istruzione "if (forma sul quale è
stato fatto click) = forma(i) then macro_a" come la scrivo in modo
da valere per tutti i click? sono stato chiaro? a presto.
ricky53 |
|
| Seleziona forma di Big
ronnie |
Ciao ricky,come ti avevo già accennato,io il
problema lo risolverei con un "argomento" per la macro valida per
tutti.scriverei una macro per ogni forma che nomina l'argomento e
chiama la macro uguale per tutti.ti invio un esempio con due forme
per chiarirti la mia idea.fammi sapere,ciao.
Sub Forma1()
Argomento = "Oval 1"
Macropertutti Argomento
End Sub
Sub Forma2()
Argomento = "Oval 2"
Macropertutti Argomento
End Sub
Sub Macropertutti(Argomento)
For I = 1 To Sheets(1).Shapes.Count
'Questo è un esempio generale, ma tu puoi cambiare Sheets(1).Shapes(I).Name
'con un nome della forma(tipo "Oval 1")
If Argomento = Sheets(1).Shapes(I).Name Then MsgBox "Ricky"
Next I
End Sub
| |
|
| Selezione oggetto in un foglio
protetto di Ricky53 |
Innanzi tutto grazie per il tuo interessamento ma,
come vedi (nel codice che ho inviato) mi hai proposto di utilizzare
una soluzione che già ho in uso (al momento è l’unica soluzione che
ho trovato). il mio scopo è quello di evitare le 44 macro con i
44 parametri perchè, in un altro foglio, sto realizzando un test per
le scuole medie superiori (con 52 ovali o più) e vorrei semplificare
il metodo per eseguire delle istruzioni condizionate dall’ovale
cliccato. grazie comunque del tuo interessamento.
se ti
dovesse venire in mente un’altra soluzione sai che sarà ben accetta.
ciao, ricky53
Sub Stati(Riga)
'
' Viene chiamata da tutte le macro con nome "Nazione...."
... ... ...
'Esempio di utilizzo del parametro “Riga†ricevuto secondo l’ovale cliccato -
'istruzioni estratte dalla macro generale
Sheets("Stati").Select
Range("C" & Riga).Select
... ... ...
... ... ...
Sub Nazione01()
Stati (3)
End Sub
... ... ...
Sub Nazione....()
Stati (...)
End Sub
... ... ...
Sub Nazione44()
Stati (843)
End Sub
| |
|
| Sblocco shapes di Big
ronnie |
Ciao ricky,se tu sblocchi la forma una volta che
riproteggi il foglio la selezione te la lascia fare,quindi esegui
questi passaggi:
1)sproteggi il foglio
2)togli la
macro assegnata alla forma
3)clicca 2 volte sulla forma
4)seleziona la scheda protezione
5)togli la
biffatura
6)proteggi il foglio e dopo seleziona la forma,
vedrai che la seleziona rimane.ciao |
|
| Selezione oggetto in un foglio
protetto di Ricky53 |
Cerco di spiegarmi in modo semplice: il mio
problema si traduce in questo semplice ciclo for i = 1 to
max_numero_forme if (forma sulla quale è stato fatto click) =
forma(i) then macro_a end if next i
domanda: come
scrivo "forma sul quale è stato fatto click" in istruzioni vba?
sono stato sufficientemente chiaro? grazie. a presto.
ciao, |
|
| Risolto di Ricky53 |
Per i forum-nauti che mi hanno aiutato: ho risolto.
e' stato più semplice del previsto è bastato scrivere:
cells(1,1)= application.caller
per ottenere nella
cella il valore della forma (in italiano) sulla quale ho fatto
click.
grazie di nuovo a tutti. ciao, ricky53 |
|
| di Big ronnie |
| Grazie peril suggerimento. |