rendere attiva la cella selezionata
Hai un problema con Excel? 
rendere attiva la cella selezionata
di luna65 (utente non iscritto) data: 25/07/2016 19:10:33
dovrei risolvere un problema ma non ho idea di come fare, provo ad e4sporrte il problema con la speranza che qualcuno sappia come risolverlo.
Ho un intervallo di celle da I5:I12 e M5:M12 risultano selezionate se premo invio vada dalla cella I5AI12 se il cursore si trova in I12 e premo invio il cursore si sposta nella cella M5 e prendo invio si sposta di una cella fino alla cella M12 nella cella M12 se premo invio il cursore torna nella celle I5 e riparte. quello che dovrei fare è la prima cella selezionata è I5 oltre alla selezione è possibile rendere la cella attiva per poter scrivere dentro senza cancellare quello che c'è gia scritto, ora devo premere il tasto f12, ma delle volte mi dimentico e cancello quello che c'è gia scritto. naturalmente qundo do invio per spostarmi di cella la cella si deve attivare, e cosi via per tutte le celle della selezione.
di Vecchio Frac data: 25/07/2016 19:20:26
La spiegazione è un po' incasinata ^_^ e comunque volevi dire F2 non F12; puoi disabilitare l'edit diretto in cella (a scossa fischiano le orecchie!); puoi scrivere due righe in VBA per pilotare la selezione e gestire l'entry.
Prova ad allegare un esempietto spiegando praticamente l'obiettivo.
di luna65 (utente non iscritto) data: 25/07/2016 21:21:48
allego un file di esempio se provi a clikkare il pulsante zum seleziona vedrai che ingrandisce il foglio e seleziona delle celle, la prima cella selezionata e la I5, come puoi notare ci sono dei numeri in alcune celle, dando invio si seleziona la cella I6 ecc. il problema è che se devo scriverci dentro devo premere F2 o fare doppio clik per attivare la cella, invece vorrei rendere gia attiva la cella I5 per scrivere e dando invio attivare la cella selezionato senza dover premere f2 o fare doppio clik.
di Marius44 data: 25/07/2016 22:01:29
Ciao Luna65
penso sia sufficiente sostituire
Range("I5").Activate
con
Range("I5").Select
Mi piacerebbe sapere perchè i numeri inseriti sono preceduti da = (uguale)?
Ciao, Mario
di luna65 (utente non iscritto) data: 25/07/2016 22:34:24
ciao mario non basta cambiare in Range("I5").Select, il problema e che la cella deve risultare attiva con il cursore dentro la cella lampeggiante tipo quando premi il tasto F2, il tutto è che se vado a scrive e la cella non è attiva per la scrittura mi cancella tutto quello che gia c'è nella cella, il segno = e perche in ogni cella corrisponde a eterminati prodotti e devo poter effettuare somme e sottrazioni fra numeri nella stessa cella, e poter verificare i vari passaggi effettuati.
praticamente ogni volta che premo invio per spostarmi da una cella all'altra la cella si deve attivare. prova ad aprire il file e dai invio vedrai che se vai a scrivere senza premere F2 o fare doppio clik sulla cella il contenuto all'interro si cancella.
di Marius44 data: 25/07/2016 23:00:44
Ciao Luna65
inserisci questa riga di codice (dopo aver selezionato la cella)
SendKeys "{F2}", True
Fai sapere. Ciao,
Mario
di luna65 (utente non iscritto) data: 25/07/2016 23:34:04
ciao Mario inserendo la riga di codice da te segnalata dopo la selezione della cella, funziona solo per la prima cella il problema è quando premo invio per spostarmi di cella, come faccio a far scattare il comando SendKeys "{F2}", True per le altre celle ogni folta che premo invio e seleziono la cella dopo?
di patel data: 26/07/2016 10:46:18
prova così
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("I5:I11"), Target) Is Nothing Then SendKeys "{F2}", True
End Sub
|
di Marius44 data: 26/07/2016 15:14:58
@patel
Ciao Andrea e grazie per aver risposto al posto mio (ero al mare e son tornato ora).
Ciao,
Mario
di luna65 (utente non iscritto) data: 26/07/2016 18:28:59
ciao patel ho provato ad aggiungere il codice ma non funziona, forse sbaglio qualcosa io, quando premo invio per spostarmi di cella la cella non si attiva, invio il foglio con il codice che mi hai suggerito. Fai una prova vedi se da te funziona
di patel data: 26/07/2016 18:56:48
non so che dirti a me funziona il tuo file, la macro funziona soltanto sul Range("I5:I11")
di luna65 (utente non iscritto) data: 27/07/2016 18:46:34
ciao patel ti chiedo scusa, ho notato delle anomalie, e non sò come mai si verificano provo a spiegare, se lancio la macro cliccando sul pulsnte zun selezione, ho notato che il tasto bloc num mi viene deselezionato praticamente si spegne la luce dulla tastiere, e per attivarlo devo piggiare sul tasto bloc num. poi metto il puto di interruzione per seguere il codice con f8 e noto che quando premo invio da tastiera l'evento Private Sub Worksheet_SelectionChange(ByVal Target As Range), non scatta se ci vado con il maus sopra la cella e faccio clik l'evento parte, inizio a premere f8 per seguire il codice, quando arrivo su SendKeys "{F2}", True e premo f8 per continuare succede la seconda anomalia si apre la finesta con tutte le librerie e sulla parte Membri di '' si posiziona su Asc, devo chiude la finesta clikkando sulla x in alto e l'evento non scatta. Sai se devo installare qualche componente?
Ho cercato di spiegare cosa succede con la speranza che riesci a darmi una mano a risolvere il problema.
Grazie ancora
di patel data: 28/07/2016 09:00:37
non devi lanciare alcuna macro, funziona da sola intercettando l'evento selezione cella-
questo tipo di macro non funziona bene con F8
di Vecchio Frac data: 28/07/2016 09:19:58
Come dice patel, non devi attivare l'esecuzione passo-passo (F8) quando è implicato SendKeys (cit. "questo tipo di macro non funziona bene con F8") e in breve ti pieghiamo il perchè.
Sendkeys, che io tra parentesi non amo particolarmente, serve a simulare la pressione dei tasti sulla tastiera (quasi tutti i tasti) e a inviarli alla "finestra attiva".
Se stai eseguendo il codice passo-passo (con F8) stai visualizzando il modulo del codice, ed è questa la finestra attiva. Nell'editor, la pressione del tasto F2 attiva il visualizzatore oggetti (che io uso spesso in verità, non so gli altri). Perciò quando il codice in esecuzione arriva all'istruzione Sendkeys "{F2}" la esegue dove si trova, cioè nell'editor stesso, e ti apre il visualizzatore oggetti, che è posizionato per default su "tutte le librerie" (cioè i componenti di Excel i cui riferimenti sono attivi nel progetto) e per standard si parte dalla Library VBA (cioè il core: VBE6.DLL). Qui la prima classe che si incontra è "Globals" ("< globali >") il cui primo membro è la funzione "Abs" (non Asc anche se è lì vicino).
A questo punto l'esecuzione del codice va un po' in pallino :)
Come dice patel non devi lanciare la macro: la Sub Worksheet_SelectionChange si attiva quando sposti il cursore nel foglio con le frecce o con il topo.
A proposito: in inglese è "mouse", non "Maus" che è la stessa cosa ma in tedesco :)
di luna65 (utente non iscritto) data: 28/07/2016 19:19:16
ho capito che non devo segure la macro con f8, però ho il problema che la macro che lancio io zum celle mi ingrandisce parte del foglio e mi seleziona le celle, il che mi fa passare da cella a cella senza andare in altre celle nell'esempio del foglio allegato seleziona e zumma le celle I5:I11,M5:M12, una volta selezinate le celle ogni volta che preo invio il cursore si sposta dalla cella I5 in I6 ogni invio una cella fino alla cella I11 quando arrivo alla cella I11 al prossimo invio sui sposta in M5 e cosi via, comunque ho notato che il foglio non funziona per la selazione delle celle se io deseleziono le celle e premo invio il codice di patel funziona, solo che a mè serve far spostare excelle nelle celle I5:I11,M5:M12, e far attivare la cella ogni invio come posso fare?
di patel data: 28/07/2016 20:10:51
non avevo capito il discorso della selezione dei 2 range, io lo provavo senza lo zoom, temo che il sendkey non lo permetta
di luna65 (utente non iscritto) data: 28/07/2016 20:52:27
In effetti senza la selezione dei range funziona, non è possibile adottare altro tipo di selezione tramite vba?
di patel data: 28/07/2016 21:11:34
prova questa ed elimina la selezione del range nella macro Zum_Seleziona_241
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$I$12" Then Range("M5").Select
If Not Intersect(Range("I5:I11,M5:M12"), Target) Is Nothing Then SendKeys "{F2}", True
End Sub
|
di luna65 (utente non iscritto) data: 30/07/2016 17:45:13
Ciao patel, solo adesso ho potuto provare il la modifica al codice, adesso funziona la cella automaticamente si seleziona e si attiva, solo che sorge un piccolo problema, con il vecchio sistema di selezionare le celle si partiva dalla prima cella nel nostro esempio la I5 ed a ogni invio veniva selezinata la cella successiva fino a I11 e poi M5 fino a M12, una volta arrivati a M12 se davo invio il cursore si posizionava su I5 e partiva un'altra volta da là adesso arrivati a M12 se do invio si passa lla cella dopo a M13.
E' possibile con il tuo codice far ripartire la selezione da I5 una volta arrivati aM12.
di patel data: 30/07/2016 19:52:11
bastava vedere come si ottiene il passaggio da I12 a M5
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$I$12" Then Range("M5").Select
If Target.Address = "$M$13" Then Range("I5").Select
If Not Intersect(Range("I5:I11,M5:M12"), Target) Is Nothing Then SendKeys "{F2}", True
End Sub |
di luna65 (utente non iscritto) data: 08/08/2016 21:28:52
grazie patel per la pazienza ho provato adesso il codice è funziona grazie ancora
Vuoi Approfondire?