Nome delle forme

  • 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.