› Excel e gli applicativi Microsoft Office › Macro su cella
-
AutoreArticoli
-
Che io sappia i due modi per utenti base per attivare una macro è o assegnarla ad una forma, oppure eseguire una combinazione da tastiera.Vorrei chiedere una cosa: se durante l'imputazione di una serie di dati su una riga con la tastiera, la macro può essere inserita all'interno della cella più estrema, per esempio quella più a destra, in modo tale che continuo e ci arrivo su dopo l'imputazione con la tastiera, clicco Invio e parte la macro?CiaoOltre alle forme e pulsante e Combinazione di tasti,le macro "normali" possono essere fatte partire da icona.Esistono poi delle macro particolari che partono ad evento ovvero per esempio quando attivi un foglio, quando cambi le celle, quando apri un file, al click destro del mouse o al doppio click del mouse oppure quando cambi la cella selezionata.Tali macro si rovano andando sulla gestion progetti, selezionando il foglio su cui vuoi lanciare la macro e poi nella parte di destra selezionare worksheet(nella casella di discesa di destra) e selezionare l'opzione nella casella di discesa di destra.Se una azione si attiva alle celle di solito ti compare una stringa del tipo
Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub
Target è la cella di riferimento con un semplice comando (intersect o altri) si può selezionare per quali celle fanno partire la macro e quali invece la chiudonoCiaoLucaDiciamo che io ho creato una macro che adesso ho assegnato ad una forma.Se volessi invece assegnarla ad una cella, che o quando ci clicco anche su col mouse o semplicemente quando ci sono su clicco Enter e me la fa partire è possibile?cioè tra quelle righe che mi hai indicato dovrei far partire la mia macro ad esempio al clic Invio sulla cella G10 ad esempio.Le possibilita sono:- quando entri in una cella (che sia con freccia o mouse)- quando fai un doppio click sulla cellaQuando dici usare enter vuoi dire che hai selezionato la cella e con enter cambi la selezione (di solito quella sotto)?No, intendevo dire che arrivo sulla cella utilizzando le frecce, e una volta sopra la cella, premere Invio e lanciare la macro. Come se per questa cella, assieme alle altre funzionalità che farei con Enter, c'è anche il lancio della macro.Per quello che ne so io come vuoi fare tu non si puòperché premere enter senza aver modificato la cella stessa equivale a cambiare la cella attiva.le possibilita sono:– quando selezioni entri in una cella (che sia con freccia o mouse)– quando fai un doppio click sulla cella– quando fai click del mouse tasto destro– quando modifichi una cellaCiaoLucaScusa ti ho perso...queste possibilità che mi hai elencato sono in luogo della pressione dell'Enter?Perché se ci sono problemi, una volta posizionatomi sulla cella con le frecce, posso pure premere un qualunque altro tasto, non combinazione, ma singolo, per attivare la macrose premi un altro tasto scrivi nella cella e poi devi confermare con Invio, però la macro si attiva perché la cella è stata modificataNemmeno con qualche tasto "funzione" è possibile senza modificare la cella?come ha detto Lucale possibilita sono:
– quando selezioni entri in una cella (che sia con freccia o mouse)
– quando fai un doppio click sulla cella
– quando fai click del mouse tasto destro
– quando modifichi una cellaforse sarebbe meglio che tu spiegassi cosa vuoi realizzareAllora proviamo a lanciare la macro quando modifichiamo la cella, per esempio premendo il tasto "m"Nel modulo del foglio interessatoPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "m" Then ' tuo codice End If End Sub
Al posto del codice della macro, quindi in "tuo codice", c'è la possibilità di richiamare la macro a cui ho dato comunque un nome? tipo con un'istruzione "call nome_macro"?certamente, ma invece di domandare potresti provare, il vba non morde 🙂L'avevo scritto solo perché non ho ancora la possibilità di testare il codice, e ricordavo da reminiscenze passate che c'era con comandi del genere la possibilità di richiamare una macro.Anche perché siccome lo dovrei applicare a file diversi, in cui la macro ho lo stesso nome, ma si comporta in modo leggermente diverso, cosi riuscirei a standardizzare la cosa su tutti i diversi file.Ho scritto il mio codice all'interno del testo suggeritomi, ho salvato e ok.Sono tornato nel foglio interessato, ma mi sorge un dubbio; la "m" dove la devo andare a digitare? perché non ho più indicato celle obiettivo per cosi dire.La macro comincia con un Sub nome_macro e finisce con un End Sub.La composizione precisa con il testo che mi avete suggerito sarebbe:Private Sub Workshhet_SelectionChange (By Val Target As RangeIf Target.Value = "m" ThenSub nome_macro...End SubEnd IfEnd Sub??Nel modulo del foglio interessatoPrivate Sub Workshhet_SelectionChange (By Val Target As Range
If Target.Value = “m” Then
call nome_macro
End If
End Subin un modulo standardSub nome_macro.......End SubVi fornisco un feedback su quanto suggerito.Innanzitutto io ho inserito il solo testo Private.... fino a End Sub nel foglio interessato.Una volta che clicco m su una cella, qualunque essa sia, e do Invio non succede nulla. La macro invece viene lanciata quando mi ci posiziono sopra con il cursore del mouse cliccandoci all'interno o con le frecce arrivandoci.Alla fine la registrazione del record la ottengo, che sarebbe l'obiettivo della macro, però nel lancio Excel mi restituisce un errore di Runtime 13 Tipo non corrispondente, e verificando il Debug mi punta proprio alla riga con l'If Target.... Cosa vorrebbe dire?Ciaola PrivateSub Worksheet_SelectionChange(come dice il nome) viene attivata quando cambi la selezione ovvero quando passi da una cella ad un altraEsiste anche la Private Sub Worksheet_Change che viene attivata quando modifichi il contenuto di una cellaNel primo caso Target è la cella di arrivo nel secondo la cella che hai modificato.Ti allego un file dove nel primo foglio c'è un esempio della prima e nel secondo un esempio della seconda.Ti ho previsto inoltre che se ti muovi su una cella con m o M oppure se modifiche la cella come m o M allora l'azione è diversa.CiaoLucaAllegati:
You must be logged in to view attached files.Mi va benissimo anche la prima soluzione, ma perché quell'errore di debug?Sul tuo file invece mi sembra bello pulito senza alcun tipo di errori anche quando lo visualizzo ioTra l'altro ho notato che anche selezionando più celle e rilasciando mi dà quell'errore di debug. -
AutoreArticoli
