Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 42

Discussione: macro che azzera momentaneamente delle celle?



  1. #1
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    macro che azzera momentaneamente delle celle?

    Buongiorno a tutti!
    Con le modifiche che mi avete apportato adesso è tutto più semplice, ma "se possibile" mi piacerebbe implementare nel foglio1 due cose;
    - creare una range di spazio per esempio : =$A$28:$AI$53 (laddove clicco su una qualsiasi cella, presente in questo range, mi si evidenza il numero in alto al foglio (da 1 a 15), cosi scorrendo la pagina, mi basta un click per sapere dove sono, e posso rimuovere gli altri numerini che avevo messo nelle colonne AG.

    - una macro che mi cancelli o mi porti a zero determinate celle, così che questi (numeri azzerati) non inficiano su dei calcoli che devo fare. Esempio al volo; le strutture che vedete nel foglio sono tute uguali, quindi vediamo per esempio la numero 1: ci sono una serie di valori da J29:R49, che scrivo a mano, ed in alcuni casi devo MOMENTANEAMENTE cancellare una colonna per fare dei conteggi, per poi rimetterla, ma è molto scomodo, e piu di una volta, li ho cancellati, poi dopo le mie prove, con ctrl e z sono andato indietro ma non li ho piu raggiunti, perdendo dati fondamentali, ecco perche volevo creare un sistema semplicissimo, se clicco e mi azzera momentaneamente quelle sezioni.
    Mentre nel range V29:Y49, i dati sono presi da una formula, ma credo che la macro possa azzerare anche questi.

    La celle dedite all' azzeramento della colonne interessate possiamo metterle qui: J28:Y28 cosi clicco sul nome e non mi sbaglio (se possibile mettiamo un altro colore a quella cella con il nome cosi si evidenza e so che e attivo il blocco), pero per sbloccare come si fa ;) ?

    Grazie a tutti!!
    Buona giornata
    File Allegati File Allegati

  2. #2
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    Citazione Originariamente Scritto da corfurio Visualizza Messaggio
    Buongiorno a tutti!
    Con le modifiche che mi avete apportato adesso è tutto più semplice, ma "se possibile" mi piacerebbe implementare nel foglio1 due cose;
    - creare una range di spazio per esempio : =$A$28:$AI$53 (laddove clicco su una qualsiasi cella, presente in questo range, mi si evidenza il numero in alto al foglio (da 1 a 15), cosi scorrendo la pagina, mi basta un click per sapere dove sono, e posso rimuovere gli altri numerini che avevo messo nelle colonne AG.
    si. è possibile tutto. basta imparare a farne almeno una metà e l' altra metà arriva da sola.

    Prova quindi a fare tu qualcosa per noi:

    -Allega un file con un solo foglio al suo interno (uno solo. Non tre come succede di default
    -dagli un nome consono a quello che vuoi fare, per esempio "lezione1_excel"

    -in questo file di excel, denominato anche workbook, dovrai inserire una o più istruzioni VBA affinche succeda una cosa molto semplice:

    selezionando una cella compresa nel range "A28:AI53", deve comparire un messaggio, in una messagebox che dice:

    "hai cliccato su una cella interessante per i tuoi scopi"

    Per compiere questo semplice lavoro devi solo conoscere la Funzione MsgBox (Visual Basic)
    e gli eventi di worksheet (gli eventi che si scatenano nel foglio di calcolo quando interagisci con esso)

    Naturalmente, dalle tue affermazioni, hai gia ricevuto aiuto; quindi dovresti sapere come accedere all' area di sviluppo e dove andare a digitare, carattere dopo carattere, le poche e sempli istruzioni atte a fare quanto appena richiesto


    Quando sarai riuscito a fare questo allora avrai anche imparato come svolgere quanto hai esposto nella prima parte della tua richiesta:

    Citazione Originariamente Scritto da corfurio Visualizza Messaggio
    ...creare una range di spazio per esempio : =$A$28:$AI$53 (laddove clicco su una qualsiasi cella, presente in questo range, mi si evidenza il numero in alto al foglio (da 1 a 15)...

  3. I seguenti 2 utenti hanno dato un "Utile" a dracoscrigno per questo post:


  4. #3
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    4027
    Versione Office
    2007 - 2013
    Utile ricevuti
    482
    Utile dati
    76

    Re: macro che azzera momentaneamente delle celle?

    Ottima risposta Draco
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

  5. #4
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: macro che azzera momentaneamente delle celle?

    per la seconda parte basta usare il registratore di macro, selezioni il range da cancellare, taglia, copia in una zona lontana del foglio, fai ciò che devi fare e poi fai l'inverso

  6. #5
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    si. è possibile tutto. basta imparare a farne almeno una metà e l' altra metà arriva da sola.

    Prova quindi a fare tu qualcosa per noi:

    -Allega un file con un solo foglio al suo interno (uno solo. Non tre come succede di default
    -dagli un nome consono a quello che vuoi fare, per esempio "lezione1_excel"

    -in questo file di excel, denominato anche workbook, dovrai inserire una o più istruzioni VBA affinche succeda una cosa molto semplice:

    selezionando una cella compresa nel range "A28:AI53", deve comparire un messaggio, in una messagebox che dice:

    "hai cliccato su una cella interessante per i tuoi scopi"

    Per compiere questo semplice lavoro devi solo conoscere la Funzione MsgBox (Visual Basic)
    e gli eventi di worksheet (gli eventi che si scatenano nel foglio di calcolo quando interagisci con esso)

    Naturalmente, dalle tue affermazioni, hai gia ricevuto aiuto; quindi dovresti sapere come accedere all' area di sviluppo e dove andare a digitare, carattere dopo carattere, le poche e sempli istruzioni atte a fare quanto appena richiesto


    Quando sarai riuscito a fare questo allora avrai anche imparato come svolgere quanto hai esposto nella prima parte della tua richiesta:

    Ciao dracoscrigno,
    Sono pienamente d' accordo nel dimostrare quanto meno la buona volontà. Sono 3 ore che cerco e provo di far comparire il text box, allego il file come indicatomi con un solo foglio.
    Il codice io lo guardo e riguardo ma non trovo l' errore, dovrebbe apparirmi questa text box se in una QUALUNQUE cella, cè una conferma nominativa, era uno spunto anche per quello che poi mi servirà.
    Rimango disponibile, vi ringrazio per il supporto e chiaramente vado avanti a provare e scovare l' errore, il mio problema è che esce sempre questa frase: "numero errato di argomenti o assegnazione di proprieta non valida"
    File Allegati File Allegati

  7. #6
    L'avatar di Powerwin
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Milano
    Messaggi
    746
    Versione Office
    2010
    Utile ricevuti
    135
    Utile dati
    45

    Re: macro che azzera momentaneamente delle celle?

    Scusa Corfurio, non vedo codice nel file che hai allegato
    Flavio


  8. #7

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    3273
    Versione Office
    2013
    Utile ricevuti
    972
    Utile dati
    775

    Re: macro che azzera momentaneamente delle celle?

    Ciao a tutti,

    @corfurio
    non ho ancora aperto il tuo ultimo file allegato, ma vedo che l'estensione è ".xlsx" quindi dubito fortemente che all'interno ci sia un qualche codice da controllare.

    Le "cose" che ti hanno suggerito le puoi trovare facilmente in qualche tutorial online (per capire come e quando usarle); a tal proposito ti consiglio di leggere il thread postato ieri da Alfredo (alfrimpa):
    http://www.forumexcel.it/forum/7-dom...l-vba-di-excel


    Ciao @Powerwin
    non avevo visto la tua risposta

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  9. #8
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Citazione Originariamente Scritto da Powerwin Visualizza Messaggio
    Scusa Corfurio, non vedo codice nel file che hai allegato
    Scusate, ora ho messo il file con attivazione macro, "spero" si veda il codice, comunque ho messo questa parte nel vba del foglio;
    Private Sub Worksheet_Change(ByVal Target As Range)If Target = "" Then Exit Sub
    If Target <> "provatesto" Then
    Target.ClearContents
    Target.Select
    msgBOX "Inserire prova testo"
    End If
    End Sub

    se clicco su una cella qualsiasi, a patto che sia il nome "provatesto" la macro scatta, ma dandomi l' errore scritto nell' altro post.
    Vado a vedermi anche il link, grazie :)
    Buona serata
    File Allegati File Allegati

  10. #9
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    Quando cerco di capire come funziona una cosa, cerco di farla nel modo più "pulito" possibile per far si che nulla possa influenzare il mio operato. Non funziona sempre ed a volte, proprio il fatto stesso di non conoscere mi porta a sotto valutare dei problemi ed a volte anche il dare per scontato cose impossibili

    Del file che hai allegato qui sopra, infatti, non riuscivo a capire come mai la funzione msgBOX(). avevo subito notato che l' intellisense correggeva in modo sbagliato: msgBox -> msgBOX

    Al che butto l' occhio sulla sinistra dello schermo e noto che esiste un modulo
    Lo apro e vedo scritto:

    Codice: 
    sub msgBOX()
    
    End sub
    Elimina il modulo e vedrai che almeno il messaggio lo vedrai apparire. MA vediamo di eliminare anche un grosso problema di comprensione

    le parole "SUB", "END SUB", "FUNCTION", END FUNCTION,... parole chiave atte a delimitare, definire e dichiarare una porzione di codice attraverso un nome e dei parametri

    Infatti, la funzione che devi utilizzare, la quale è gia stata scritta da qualcun altro a casa microsoft, chiamata Funzione MsgBox (Visual Basic) viene così rappresentata:

    Codice: 
    Public Function MsgBox(ByVal Prompt As Object, Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _
                                                                       Optional ByVal Title As Object = Nothing ) As MsgBoxResult
    Tralasciando un sacco di cose che confonderebbero, prendiamola un pochino semplificata:

    MsgBox(Prompt As Object)

    la parte rossa è il nome della funzione. la parte dentro le parentesi sono il o gli argomenti. Questa funzione ha molti argomenti, tutti opzionali ed uno solo obbligatorio.
    Essendo un metodo per generare una finestrella con dentro scritto qualcosa il minimo che si possa fare è dirgli cosa mostrarci scritto:

    msgBox prompt:="Ciao. Io sono qualcosa di scritto" (fai caso ai colori differenti e mettili a confronto con quanto scritto sopra )


    Ora che abbiamo l' istruzione, dobbiamo sapere dove scriverla. tu hai affermato:

    Citazione Originariamente Scritto da Corfurio
    ...laddove clicco su una qualsiasi cella,...

    Prima di passare al listato che hai proposto ti chiedo di fare una cosa che ti farà sbuffare ma va fatta perchè io sono qui, tu sei li, io non vedo cosa combini e tu non sei certo di cosa bisogna fare. Quindi, per evitare che smanazzi sul Pc combinando qualche altro frustrante guaio:

    Trascina i file su cui ti stai allenando nel cestino del decktop
    Aprim un NUOVO file di EXCEL
    cancella DUE dei tre fogli che ti vengono creati di default di modo che ne rimanga SOLO uno
    Salva CON NOME consono cambiando COME cartella di lavoro con attivazione macro di Excel (*.xlsm)

    Non ti sto chiedendo questo perchè sono un eccentrico con la barba incola che passeggia per le vie del centro scalzo fumando la pipa. ma per ovviare ad alcuni problemi:
    Un solo foglio perchè cosi sono sicuro che il codice sorgente che andrai sviluppando sarà proprio su quel foglio e non su altri
    salva con nome perchè ci sono delle istruzioni che danno errore se il file non è ancora stato salvato (workbook.path, il percorso del file, per esempio, non è utilizzabile)
    con attivazione macro perchè se vuoi che quello che scrivi rimanga in memoria anche la prossima volta che accendi il pc, è questa una delle opzioni più consone.
    Però, se riesci a muoverti bene anche senza salvare prima, senza cancellare folgi e senza attivazione. Be...
    Io salvo il file solo dopo aver imprecato perchè una variabile con il percorso del file è vuota. ma non sono da prendere ad esempio

    Una volta aperto il file Excel.
    dopo aver cliccato sulla ribbon Sviluppo -> visualizza codice; ti ritroverai nell' IDE di VBA.
    davanti a te avrai:
    una finestra grande ceh prenderà buona parte dello schermo.
    sopra di essa dovresti vedere due finestrelle con scritto dentro (generale) e (dichiarazioni)

    Quella è la finestrella dove andrai a scrivere tutto quello che ti salta in mente.

    Alla sua sinistra, appicciacata al bordo sinistro del monitor, dovrebbe esserci una finestrella che porta il nome di progetto - VbaProject con dentro una ramificazione ad albero che ricorda l' esplora risorse del computer.
    in questa finestra sono riportate tutte le risorse che stai utilizzando dentro excel.
    in questo momento dovresti avere solo:
    una radice VbaProject(nome del file che stai utilizando)
    un suo ramo principale chiamato microsofto Excel oggetti
    contenente due soli oggetti:
    L' unico folgio che stai utilizzando. foglio1(nomeDatoAllEtichetta)
    Nell' unico File che hai aperto Thisworkbook


    noterai che è evidenziato, di un grigino pallido vergogna, il foglio ma per sincerartene puoi DOPPIO cliccarlo con il tasto sinistro di modo che diventi a sfondo blu per un attimo e poi di quel evideziatissimo grigio "non ti vedo neanche se prego" (chissà perchè si sono inventati una cosa del genere bisognerebbe chiederglelo)

    Ritorniamo alla finestra di digitazione, quella grande.

    Ora è vuota e desolata e dobbiamo creare una scatola che contenga la nostra istruzione.
    Ti ricordi che in cima a questa sequela di parole ho parlato di SUB e FUNCHTION definendole come delimitatori?

    La PRIMA cosa ceh si deve fare quando ci si accinge a programmare è scrivere queste due parole chiave:

    Codice: 
    Sub nomeDellaSub()
    
    
    End Sub
    Naturalmente il nome è un nome scelto secondo il nostro estro ma attenzione perchè ha alcune regole da rispettare per non incorrere in problematiche varie come, tra l' altro, è successo a te.

    Quindi procediamo a pensare ad un nome da dare alla nostra SUB, penso che il canonico "Prova" sia più che sufficiente

    Codice: 
    
    Sub Prova()
    
    
    End Sub
    BAsta che digiti: Sub Prova e poi vai a capo. tutto il resto lo aggiunge l' IDE, il computer.ora che abbiamo il contenitore infiliamoci dentro, FINALMENTE, la nostra istruzione
    Codice: 
    Sub Prova()
        msgBOX prompt:="Ciao. Io sono qualcosa di scritto"
    End Sub
    A questo punto controlla che il cursore, Quella barrettina sottile che lampeggia nella finestra, sia posizionata ll' interno del contenitore che hai appena creato, cioè che stia lampeggiando tra le parole SUB ed END SUB.Se così non fosse ti basta cliccare all' interno con il mouse come se volessi andare a scrivere qualcosa.Fatto anche questo premi il tasto F8.noterai che si evidenzia di giallo la scritta Sub Prova()premi ancora F8.ora la riga evidenziata è la tua istruzione msgBOX prompt:="Ciao. Io sono qualcosa di scritto"premi ancora F8.... IH ih ih ih .... vedi che la finestrella con scritto qualcosa dentro esce... Scusa ma io mi esalto sempre quando funziona. anche se è solo una maledetta msgbox() Ora premi F5 per far proseguire il programma fino al suo temrine oppure premi F8 fino a che l' ultima riga: END SUB, non perde l' evidenza di giallo.Penserai che sono matto perchè tu vuoi che la tua istruzione si avvii secondo un evento ma ti esorto a comportarti sempre in questo modo:Fai un passo alla volta. una sequela di istruzioni che funziona in una Sub di prova, funzionerà anche altrove. Ora è solo un istruzione ma per fare quello che vuoi fare ut ne servono parecchie. Se commetti un errore sapendo che tutti i passi fatti fino a quell' errore sono buoni, saprai dove agire per correggerlo. MA se non testi ogni singolo passo, poi diventi matto a cercare l' errore.Ora sappiamo che per fare unscire una finestra con scritto dentro qualcosa bisogna fare come abbiamo fatto. Niente di più.Ma dove mettere l' istruzione se voglio che essa parta da sola quando io faccio qualcosa sul foglio?hai detto?... A si:laddove clicco su una qualsiasi cella, ...l' evento, quindi, è quello che riguarda la selezione delle celle.
    Tu hai utilizzato: Private Sub Worksheet_Change(ByVal Target As Range)

    che riguarda il cambiamento di una cella (quando scrivi qualcosa dentro una cella, lei cambia e genera l' evento change.

    Tu, invece, mi ripeto, vuoi fare click su una cella, immagino che sia selezionarla, e qui vuoi che capiti qualcosa.

    Bene. vai a vedere dentro quelle due caselle di cui ti parlavo prima, quelle sopra alla finestra di digitazione dove c'era scritto (generale) e (descrizione) ma ora vedrai (generale) e Prova
    nella prima troverai Worksheet.
    cliccandoci sopra ti verrà proposto, di default, proprio il contenitore, la sub che interessa a te:

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    
    End Sub
    Tutti i metodi, oltre a questo proposto, li trovi nella seconda finestrelal che ora, dovrebbe portare il nome selectionchange. se ci clichi sopra vedrai aprirsi la tendina e potrai sceglierne altri secondo le tue esigenze (NON PROVARCI ORA)

    Prendi la tua istruzione ed infilala nela SubRoutine gestita dall' evento change:

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        msgBOX prompt:="Ciao. Io sono qualcosa di scritto"
    End Sub
    Ora vai sul tuo foglio di calcolo ed incomincia a selezionare qualche cella qui e la.

    Noterai che un altro passo è stato fatto e puoi spuntare la prima richiesta tra:

    - laddove clicco su una qualsiasi cella,---> FATTO
    - presente in questo range,
    - mi si evidenza il numero in alto al foglio (da 1 a 15)


    Ora. logicamente devi Limitare il raggio d' azione di quell' istruzione che, altrimenti, ti porterà in poco tempo a spaccare il pc a martellate.

    RICORDA. FINO A qui sei a posto. Prima di quì NON devi correggere niente. La cosa funziona. Se tu clicchi una cella, ALLORa salta fuori un messaggio.
    ora devi DELIMITARE l' effetto.

    Per aiutarti in questa cosa ti serve una nozione di debugging.

    vai a guardare la finestra di digitazione.
    vedi che ha sinistra, è delimitata da una cornice grigia più spessa? all' altezza della scritta
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)fai click con il mouse.
    noterai che appare un pallino marroncino e scompare se ci clicchi ancora sopra.
    Quel pallino posizionato li ti servirà come blocco del flusso del programma. con questo metodo puoi bloccare l' esecuzione del programma su ogni riga ceh contiene un istruzione.
    A te, ora, serve all' inizio della SUB, quindi è in prima riga che metti il blocco.

    Ora vai ancora nel foglio a selezionare una cella...

    Non appena selezioni una cella, viene generato l' evento legato alla tua azione.
    l' evento fa avviare la procedura ad esso legata.
    ma il flusso viene bloccato perchè tu hai infilato un punto di interruzione.

    Ti vien cosi mostrato ancora l' IDE con il flusso fermo sull' istruzione in prossimita del punto che tu hai impostato.
    in questo stato puoi continuare a scrivere codice (fino a che non fai qualcosa per il quale l' IDE ti avverte ma è meglio che non ti ci barcameni troppo perchè ci sono casi dove è meglio se il flusso lo guidi (puoi prendere la freccina gialla con il mouse e trascinarla dove vuoi all' interno della procedura in esame) verso la fine (END SUB) passando prima per alcune azioni come, per esempio, chiudere un file.


    con il punto di interruzione, a te, viene comodo utilizzare il tasto F8 e compiere, passo passo, le istruzioni di modo da vedere dove viene fuori un messaggio di errore, dove il programam smette di funzionare e si spegne (la evidenziazione gialla sparisce)


    Ricorda delimitare

    dentro alla procedura vien passato un argomento, TARGET. Esso è la cella che hai cliccato.

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'SE  Target E' una cella di quelle che ti ho indicato ALLORA
            msgBOX prompt:="Ciao. Io sono qualcosa di scritto"
      'FINE DEL SE
    End Sub
    Prova a copioincollare e lavorare su questo piccolo modello.

    IN bocca al lupo :)

  11. I seguenti 4 utenti hanno dato un "Utile" a dracoscrigno per questo post:


  12. #10
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Buongiorno
    Grazie per il tempo prezioso che mi dedichi, ho seguito passo dopo passo tutta la procedura, e sono riuscito a fare tutto. Ho anche visto i menù che indicavi nella spiegazione, e capito perchè non andavano prima, ovviamente erano tutti sbagliati.
    Il file caricato è abilitato alle macro, ho inserito il codice, fatto delle prove, e verificato anche f8 con i pallini per bloccare il codice, tutto appreso ;)
    Nel file caricato ho messo in cima una serie di numeri, perche ora, ho capito come funziona l' inizio della dichiarazione, devo capire come "dialogare" con le celle, così quando si manifesta una regola, scatta quel comando;
    Nel mio esempio, pensavo di creare 2-3 range assegnandogli un nome, poi cercare il modo, per dire alla funzione, se clicco in uno di questi range, significa che sono "qui", quindi mi trovo alla struttura 5 per esempio, di conseguenza dovrebbe illuminarsi la cella col il numero 5, e magari, se riesco anche a far comparire il NOME della struttura, in un' altra cella sempre posta in riga1.
    I nomi delle strutture sono sulla stessa asse di colonna, cambia solo la riga, il massimo, sarebbe con un clik, avere il nome della struttura e il riferimento colorato di cella, e sapere quindi subito dove mi trovo.
    Vado avanti a sperimentare,
    Grazie ancora...
    File Allegati File Allegati

  13. #11
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    Parti dal basso.
    Prima di costruire una reggia con 18 stanze cerca di capire almeno come si impasta la malta e qual' è la differenza tra una pietra ed un mattone

    Per il passo successivo, non devi immaginare niente. devi solo cercare di tradurre in computerese quello che ti ho gia scritto in italiano o quasi

    Di quello che si parlava prima non ne dobbiamo più parlare perchè è gia assodato.

    Ora stiamo parlando di filtrare quello che gia funziona perchè si vuoe limitare il raggio d' azione

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'SE  Target E' una cella di quelle che ti ho indicato ALLORA
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
      'FINE DEL SE
    End Sub
    Quello che vedi scritto in verde, come hai potuto constatare tu stesso, viene visto come un commento perchè preceduto dal segno di apostrofo.
    Si usa dire,oltre a "commentare", "scrivere un commento", "remmare" perchè l' istruzione per commentare una riga, in Basic, e la parola chiave: REM

    Detto questo; io ho remmato le due istruzioni che vedi in verde perchè non sono scritte in VuBiAese ma in Dracoscrignese antico ed il Pc non lo conosce.

    Non c'è proprio niente che ti faccia pensare, tra le varie istruzioni che conosci, a cosa assomigli a:

    SE (condizione) ALLORA
    fai qualcosa
    ALTRIMENTI SE (altra condizione)
    fai qualcos' altro
    ALTRIMENTI
    fai qualcos' altro ancora
    FINE DEL SE

    prova a vedere questa pagina di microsoft ti può aiutare If...Then...Else Statement (Visual Basic)

    Per completare questa parte devi mettere insieme un paio di cose:

    'SE Target E' (una cella di quelle che ti ho indicato) ALLORA

    sulla parte verde non dovresti incontrare grossi problmemi.
    sulla resto invece, per parlare di più celle, bisogna cambiare il paradigma, l' approcio ed è meglio farlo dopo aver percorso alcuni passettini con questo modo più intuitivo.

    Ho differenziato l' istruzioni con più colori per differenziare le varie componenti.

    la parte verde trova risposta nell If...Then...Else Statement (Visual Basic) di cui abbiam parlato poco sopra.
    La parte porpora, il target, lo avrai notato, è l 'argomento della sub routine dove stai digitando:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    la parte tra parentesi in rosso è l' effettiva cella che tu vorresti far esplodere in un tripudio di finestre danzanti. Di questo non abbiamo ancora parlato. Ma eccoci pronti a farlo:

    Per definire una cella, una riga, una colonna, o una selezione composta da un unico o più blocchi di celle contigue si utilizza la classe Range()

    Tale classe, per istanziare una reale cella del nostro foglio, ha bisogno di sapere quale sia questa reale cella del nostro foglio e per farlo dobbiamo passargli, attraverso i suoi argomenti, qualcosa che rappresenti la nostra reale cella.
    Uno dei tanti modi per farlo è quello di passare, come argomento, l' indirizzo, l' ADDRESS, delle celle o del gruppo di celle.

    Se tu volessi rappresentare la cella A1 del tuo foglio scriveresti: Range("A1")
    per rappresentare più celle contigue, a formare un rettangolo insomma, le rappresenteresti attraverso la cella in alto a sinistra e la celal in basso a destra:
    Range("A1:E5")


    Dato che ti ho praticamente detto come cambiare quanto scritto in rosso ti incomincio il processo di implementazione così che tu possa vere una piccola linea guida:


    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'SE  Target E' Range("A1") ALLORA
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
      'FINE DEL SE
    End Sub




    Dai. facci vedere

    che le parti verdi di questa macro diventano istruzioni valide per il tuo progetto

    Ricorda:
    UN passo alla volta ;)

  14. #12
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    Parti dal basso.
    Prima di costruire una reggia con 18 stanze cerca di capire almeno come si impasta la malta e qual' è la differenza tra una pietra ed un mattone

    Per il passo successivo, non devi immaginare niente. devi solo cercare di tradurre in computerese quello che ti ho gia scritto in italiano o quasi

    Di quello che si parlava prima non ne dobbiamo più parlare perchè è gia assodato.

    Ora stiamo parlando di filtrare quello che gia funziona perchè si vuoe limitare il raggio d' azione

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'SE  Target E' una cella di quelle che ti ho indicato ALLORA
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
      'FINE DEL SE
    End Sub
    Quello che vedi scritto in verde, come hai potuto constatare tu stesso, viene visto come un commento perchè preceduto dal segno di apostrofo.
    Si usa dire,oltre a "commentare", "scrivere un commento", "remmare" perchè l' istruzione per commentare una riga, in Basic, e la parola chiave: REM

    Detto questo; io ho remmato le due istruzioni che vedi in verde perchè non sono scritte in VuBiAese ma in Dracoscrignese antico ed il Pc non lo conosce.

    Non c'è proprio niente che ti faccia pensare, tra le varie istruzioni che conosci, a cosa assomigli a:

    SE (condizione) ALLORA
    fai qualcosa
    ALTRIMENTI SE (altra condizione)
    fai qualcos' altro
    ALTRIMENTI
    fai qualcos' altro ancora
    FINE DEL SE

    prova a vedere questa pagina di microsoft ti può aiutare If...Then...Else Statement (Visual Basic)

    Per completare questa parte devi mettere insieme un paio di cose:

    'SE Target E' (una cella di quelle che ti ho indicato) ALLORA

    sulla parte verde non dovresti incontrare grossi problmemi.
    sulla resto invece, per parlare di più celle, bisogna cambiare il paradigma, l' approcio ed è meglio farlo dopo aver percorso alcuni passettini con questo modo più intuitivo.

    Ho differenziato l' istruzioni con più colori per differenziare le varie componenti.

    la parte verde trova risposta nell If...Then...Else Statement (Visual Basic) di cui abbiam parlato poco sopra.
    La parte porpora, il target, lo avrai notato, è l 'argomento della sub routine dove stai digitando:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    la parte tra parentesi in rosso è l' effettiva cella che tu vorresti far esplodere in un tripudio di finestre danzanti. Di questo non abbiamo ancora parlato. Ma eccoci pronti a farlo:

    Per definire una cella, una riga, una colonna, o una selezione composta da un unico o più blocchi di celle contigue si utilizza la classe Range()

    Tale classe, per istanziare una reale cella del nostro foglio, ha bisogno di sapere quale sia questa reale cella del nostro foglio e per farlo dobbiamo passargli, attraverso i suoi argomenti, qualcosa che rappresenti la nostra reale cella.
    Uno dei tanti modi per farlo è quello di passare, come argomento, l' indirizzo, l' ADDRESS, delle celle o del gruppo di celle.

    Se tu volessi rappresentare la cella A1 del tuo foglio scriveresti: Range("A1")
    per rappresentare più celle contigue, a formare un rettangolo insomma, le rappresenteresti attraverso la cella in alto a sinistra e la celal in basso a destra:
    Range("A1:E5")


    Dato che ti ho praticamente detto come cambiare quanto scritto in rosso ti incomincio il processo di implementazione così che tu possa vere una piccola linea guida:


    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'SE  Target E' Range("A1") ALLORA
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
      'FINE DEL SE
    End Sub




    Dai. facci vedere

    che le parti verdi di questa macro diventano istruzioni valide per il tuo progetto

    Ricorda:
    UN passo alla volta ;)
    Buongiorno!
    Che fatica, sono andato a leggermi la sezione inerenti agli operatori logici, diciamo che per logica è tutto apparentemente semplice, ma poi quando compili ce sempre un errore, e non sapere dove si sbaglia è frustrante ;)
    Ho provato a fare quello che mi hai chiesto, praticamente condizioni banali, se una cella e maggiora di un' altra scrivi "ok", altrimenti scrivimi "no", eppure, questi dannati msgBox escono sempre, QUALSIASI cella seleziono, ho provato a toccare un pò la parte inerente alla sezione, Range(), ma vedo che se seleziono una cella singola, o un range appunto, che io MI TROVO DENTRO IL RANGE o fuori, il messaggio non cambia, sono sicuro che il problema e piccolo, sono IO, che non riesco a capire come DIRE, excel calmati... "SOLO" se clicco in questa cella, o questo range, mi devi creare un' azione, altrimenti "IGNORA TUTTO", questo è quello che cerco di fare ... da ore.....

    Sempre rimanendo di tema di operatori, giusto per capirne il funzionamento vedevo degli esempi, ed in tutti, partivano con
    Codice: 
    Sub nomedellacondizione()
    quindi mi crea molta confusione, come mai sono dichiarate in altro modo, difatti, in questi esempi ho notato che poi tutte vengono seguite dalla scritta Dim nome della condizione, credo sia una sorta di dichiarazione globale, ci può stare, mi sto perdendo in un bicchiere d' acqua.

    Vado avanti a maltrattare il programma ;)
    Grazie, a presto

  15. #13
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Mi sto avvicinando, ho dato un nome ad una sezione di celle chiamate (Test), poi ho adattato questo codice con IF, ed ora QUALSIASI CELLA CLICCO, excel mi seleziona l' intera sezione che ho creato, NON è quello che voglio, ma era fondamentale per me, almeno creare un qualsiasi movimento, ora ho visto che con la dicitura
    Codice: 
    Range("Test").Select
    effettivamente riesco a dialogare con il range CREATO DA ME, è un ottimo passo in avanti, mi rimane da capire come rendere questo movimento "limitato e limitante" solo se clicco su una qualsiasi cella MA FACENTE PARTE DI QUELLE ASSOCIATE (nel mio esempio Test) che va da "A1:E5".
    Capito questo passaggio, posso cercare di capire come far prendere un dato nome, presente nella colonna, in FUNZIONE della cella cliccata

    Codice: 
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Application.EnableEvents = False
        ind = "A10" 'Target.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Application.EnableEvents = True
    If ind = Range("Test").Select Then
    End If
    End Sub

  16. #14
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    sono al cellulare dalla pausa pranzo.
    purtroppo non riesco a dilungarmi in molte spiegazioni.

    Capisco che tu abbia un pò fretta ed un pò di confusione. proprio per questo non devi correre a mettere troppa carne al fuoco.

    il listato che ti sto facendo cercar di completare fa una cosa sola:
    se selezioni la cella A1 ALLORA
    compare la message box.

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                'SE Target E' Range("A1") ALLORA
                           MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
                 'FINE DEL SE 
    End Sub
    non devi fare altro, guarda le colorazioni del post sopra, che SOSTITUIRE letteralmente, le scritte colorate con le rispettive istruzioni visual basic

    "SE" in inglese è un istruzione.
    "È" in visual basic è un operatore. forse ti suona meglio "È UGUALE"
    ALLORA" in inglese, è un altra istruziine.
    FINE DEL SE" è ancora un altra istruzione.

    la struttura che otterrai sarà IDENTICA ma scritta in codice vba.
    quindi funzionante:

    selezionando qualsiasi cella tranne A1, non succederà nulla.
    selezionando A1, apparirà il messaggio nella finestrella.

    P.S.
    NON UTILIZZARE application.enableevent.

    è facile che arrivi a non capire come mai non funziona più niente anche se tutto è scritto bene semplicemente perchè ti ritrovi con gli eventi disattivati.


    p.p.s.
    sii parsimonioso con il quote dei messaggi ;)

  17. #15
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Ciao dracoscrigno, tranquillo non volevo disturbarti, in merito alle "citazioni" perdonami ma non me ne ero neanche accordo ;), ora non le metto più.
    Di seguito quello che "suppongo sia corretto, o comunque quasi risolto", siccome per logica secondo me può andare, ora, nel mio foglio non va, ma non mi va più niente, forse ho toccato qualcosa di troppo ;)

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range Is ("A1") Then
    MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
    End If
    End Sub
    Mentre qui, ho provato ad inserire il mio range di celle, andando a logica, ma sicuramente sbaglio qualcosa perchè non va;
    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("Test") Is Range("A1") Then
    MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
    End If
    End Sub
    Ciao buonagiornata

  18. #16
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: macro che azzera momentaneamente delle celle?

    Target è la cella (range) su cui hai cliccato quindi devi confrontare l'indirizzo della cella con $A$1 e il codice sarà

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
      MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
    End If
    End Sub
    quando non sai come fare cerca con google, troverai parecchi esempi

  19. I seguenti utenti hanno dato un "Utile"


  20. #17
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Grazie Patel,
    Voi avete ragione, ma è dalle 8 di stamattina che ci sbatto la testa, sto cercando di sistemare il file di lavoro, ma con tutte le cose che ho letto, mi fuma la testa.
    Allego il mio file, ho creato un foglio (PROVAAGGANCIOCELLE), io anche questi codici li ho inseriti ma non ottengo risposta da excel, sbaglierò qualcosa.
    Ho anche già visto l' altra funzione che mi sistema la problematica legata al colorare una cella (nel mio caso cliccando su una qualsiasi cella "dentro un range specifico), interior.cell e p oi il colore, il problema è capire la funzione esatta per dargli quel comando.
    Grazie a tutti, e perdonate se proprio non riesco ad andare avanti, ci sto davvero sudando su...

    Rollis13 mi aveva gentilmente fornito un codice stupendo che faceva esattamente quello che volevo, ma poi con tutte queste prove, ed avendo cambiato forma alle strutture non va più (adattandolo alle nuove celle), con questo codice mi bastava solo mettere anche la funzione "interior.cell" ed ero apposto...


    Codice: 
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    'If Selection.Cells.Count > 1 Then Exit Sub 'attivare per evitare selezioni multiple
    If Intersect(Target, Range("J1:X1")) Is Nothing Then Exit Sub 'interrompi macro se siamo fuori range
    Range("Y1") = Application.VLookup(Target.Value, Range("BQ29:BR43"), 2, False) 'esegui un Cerca.Vert
    End Sub
    File Allegati File Allegati
    Ultima modifica fatta da:cromagno; 05/09/16 alle 18:22 Motivo: Inserito codice tra i tag CODE...

  21. #18
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    Colpa mia.
    Nel raccontare mille cose mi son dimenticato di imboccare una traversa e probabilmente ho generato un pò di confusione

    Come dice, bene, Patel:
    bisogna confrontare, in questo caso, se la proprietà Address, cioè l' indirizzo della cella che abbiamo selezionato, che sarebbe Target, è l' indirizzo che ci aspettiamo, Quindi l' indirizzo della cella "A1" scritto come viene rappresentato e cioè "$A$1".

    In questi casi, anche se il risultato è identico, preferisrei non definirlo come una stringa, "$A$1" ma evidenziando il fatto che sia la una proprietà di range(), Range("A1").address

    Quindi:

    IF Target.address = Range("A1").Address then

    Per il semplice motivo che, a mio avviso, si comprende meglio che cosa è la variabile Target e sarà più facile comprendere il modo solito di intercettare una o più celle.

    Comunque, anceh se il tentativo era sbagliato, ci sei andato vicino. il risultato che ci si attendeva era questo:

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Address = Range("A1").Address Then
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
        End If
    End Sub
    Ma vediamo gli errori:

    If Range Is ("A1") Then

    Sono due. il primo, l' utilizzo di IS
    Se andiamo a vedere -> Is Operator (Visual Basic) ci viene spiegato che tale operatore si utilizza per valutare se due variabili-oggetto contengono il riferimento allo stesso oggetto, se il riferimento punta allo stesso luogo fisico della memoria. MA penso che sia meglio parlare di questo nel momento opportuno.

    L' operatore giusto è l' uguale "=" qui trovi tutti gli operatori e le tabelle di verità

    Ho sbagliato io a portarti fuori strada omettendo la proprieta .Address e me ne scuso.

    L' altro errore è rappresentare un range con ("A1")
    Per Excel, questa scritta è una semplice stringa (una serie di caratteri alfanumerici delimitati da i doppi apici) all' interno di parentesi tonde. Di fatto è una semplice stringa.
    Dicamo che non so se l' errore che hai commesso è stato quello di non mettere i caratteri di dollaro -> "$A$1" perchè ti stavi avvicinando alla soluzione come l' ha proposta Patel e quindi, tutto sommato, scrivere ("$A$1") poteva anche essere un modo ordinato.

    Oppure se con quelle parentesi volessi rappresentare un range.

    UN range lo si rappresenta in un solo modo, attraverso il metodo Range()
    la cella A1 del foglio corrente sarà Range("A1")
    la cella di un altro foglio sarà NomeDiquelFoglio.Range("A1")

    Ci sono altri mille modi di rappresentare la cella A1 di un qualsivoglia foglio in un qualsivoglia Worckbook, ma TUTTI finiscono con Range("A1")

    Ritorniamo al problema:

    ORa hai il tuo bozzetto funzionante

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Address = Range("A1").Address Then
            MsgBox prompt:="Al posto di questo messaggio eseguirò quello che ti interessa"
        End If
    End Sub
    Se hai capito come funziona questa piccola macro ed hai ANCHE capito come è impostato il costrutto If... Then... Else If... Else... End if
    Sei gia in grado di poter ampliare il progettino per controllare più celle.

    Ma esiste una scorciatoia che va però compresa:

    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("A1")) Is Nothing Then
            MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
        End If
    End Sub
    Ennius, come sempre, lo spiega in modo impeccabile -> Metodo Intersect. (intersezione) By Ennius

    Spero che questa piccola sfida, oltre che ad un ulcera per frustrazione, ti porti anche qualche insegnamento nella programmazione

    Dai. Forza. Vediamo di spuntare anche questo obbiettivo e saltare a piedi pari al prossimo :)
    Ricorda. Sempre un passo alla volta e mantieni sempre il focus sul punto dove funziona ancora tutto :)

  22. #19
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Buongiorno dracoscrigno;
    Spiegazione impeccabile come sempre, ti ringrazio anche per i link, mi sono letto le intersezioni (intersect), e quanto meno in termini di teoria ne ho compreso il funzionamento.
    Ce per caso qualche funzione che si blocca in excel o posso aver bloccato involontariamente? ho copiato questo codice corretto che mi avete dato, ma anche altri che prima andavano, ma non parte più niente, sono inseriti correttamente:
    worksheet / selectionchange, codice ed in modulo il nome della macro riferito a questo codice.
    Appena mi riparte il compilatore provo subito a cercare la soluzione prendendo come "grosso spunto" la abse ch emi avete fornito ;)
    Buona giornata!!



    **HO APPENA RIAVVIATO EXCEL, ora riparte tutto... chissà cosa avevo toccato, ora a me il bisturi, devo eseguire un' intervento

    Buongiorno dracoscrigno;
    Spiegazione impeccabile come sempre, ti ringrazio anche per i link, mi sono letto le intersezioni (intersect), e quanto meno in termini di teoria ne ho compreso il funzionamento.
    Ce per caso qualche funzione che si blocca in excel o posso aver bloccato involontariamente? ho copiato questo codice corretto che mi avete dato, ma anche altri che prima andavano, ma non parte più niente, sono inseriti correttamente:
    worksheet / selectionchange, codice ed in modulo il nome della macro riferito a questo codice.
    Appena mi riparte il compilatore provo subito a cercare la soluzione prendendo come "grosso spunto" la abse ch emi avete fornito ;)
    Buona giornata!!



    **HO APPENA RIAVVIATO EXCEL, ora riparte tutto... chissà cosa avevo toccato, ora a me il bisturi, devo eseguire un' intervento

    Riaggiorno perchè finalmente ce l' ho fatta, in tutta onestà ho solo inserito il nome che ho creato ad un range di celle, però il risultato è quello che conta quindi ora funziona, qualsiasi cella clicco, nel mio range esce il messaggio, preso dall' enfasi ho subito cercato di fare le altre sezioni, siccome sono almeno 10, ma senza risultato, o meglio, va sempre e solo la prima stringa di codice, il resto non da errori ma passa inosservato.
    Magari mi sbaglio, leggendo un pò ho capito che per le sezioni o azioni multiple, si usano le funzioni "CASE", che non servono ad altro che delineare le relative funzioni assegnando un nome diverso, ed in scaletta vengono eseguite. Vien da se, che non ho proprio idea da che parte girarmi, per adattare il codice, sempre "SE" il ragionamento che faccio sul CASE sia corretto..
    Un piccolo traguardo l' ho conquistato intanto.. grazie!!!!!



    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("selection2")) Is Nothing Then 'questa parta mi va
    MsgBox prompt:="sezione 2"
    If Not Intersect(Target, Range("sezion1")) Is Nothing Then  'questa viene ignorata
    MsgBox prompt:="sezione 1"
    
    
    End If
    End If 'ne ho messi 2 perchè il compilatore mi obbligava, dicendoci che mancava un' altro End if
    End Sub

  23. #20
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Ciao, bello bello sto capendo alcune cose leggendo ;), per esempio che prima di usare il "case", posso semplicemente adattare le varie sezioni usando il range da sistemando gli apici "" inizio e fine, e mettendo i distanziali con le virgole. 2 ore per capirlo ma l' ho capito!!
    Poi la formula passata da voi è univoca per una sezione, mentre nel mio caso avendo più sezioni, devo modificare il codice, sempre nel change, ma usando goTo per non uscire dalla routine, ma la facciamo richiamare e passare in loop all' altra condizione SE verificata.

    Questa parte di codice adattato, ora lei leggi bene tutte e 3 le sezioni create, ma ovviamente non puo DIFFERENZIARE 3 movimenti diversi, per cui farà la stessa identica cosa per ogni sezione. La parte activ.cell e solo una prova, per andare va, ma devo ancora studiarmi come dargli un range o nel mio caso una cella specifica per ogni struttura, perchè se anche metto una cella, con dollaro o senza la cella che mi cambia di colore è sempre diversa.
    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Not Intersect(Target, Range("selection2,sezion1,sezion3")) Is Nothing Then
    ActiveCell.Range("$P$1").Interior.ColorIndex = 36#
    'ActiveCell.Interior.ColorIndex = 36#
    End If
    End Sub
    Questa e la parte adattata, ogni sezione ha un comando diverso, ho aggiunto anche la terza sezione, ora ovunque clicco (dentro i range) mi escono le scritte: "sz1","sz2","sz3";
    Ho provato anche a cercare di fissare una cella specifica, che è il mio obiettivo finale, ma non ci riesco, non capisco come dare il comando alla funzione acrivecell.
    Codice: 
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Intersect(Target, Range("sezion1")) Is Nothing Then   'primo intervallo su cui verificare se la cella Target rientra, se non rientra, allora
     GoTo 10 'sostituiamo Exit Sub con GoTo 10, e andremo alla riga 10:
     End If
     If ActiveCell <> "" Then
     ActiveCell.Interior.ColorIndex = 3
     Else
     ActiveCell.Cells.Value = "sz1"
     End If
    10:    'indice riga
     If Intersect(Target, Range("selection2")) Is Nothing Then 'ora si verifica se Target è compreso in questo intervallo, se non è compreso usciamo
     GoTo 20 'sostituiamo Exit Sub con GoTo 10, e andremo alla riga 10:
     End If
     If ActiveCell <> "" Then
     ActiveCell.Interior.ColorIndex = 3
     Else
     ActiveCell.Cells.Value = "sz2"
     End If
    20:
     If Intersect(Target, Range("sezion3")) Is Nothing Then 'ora si verifica se Target è compreso in questo intervallo, se non è compreso usciamo
     Exit Sub   'con exit sub;  altrimenti continuano le istruzioni
     End If
     If ActiveCell <> "" Then
     ActiveCell.Interior.ColorIndex = 2
     Else
     ActiveCell.Cells.Value = "sz3"
     End If
     End Sub
    A presto!

  24. #21
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?


    Ragazzi ci sono riuscito!!!!!!!!!!!!!!!!! incredibile!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Ho fatto la prova solo sulla parte 2 ("selection2"), adesso se una cella, DENTRO quel range e diversa da "", mi si colora la cella che ho specificato, sono diventato matto perchè si coloravano cella fuori asse, non capivo proprio, per caso ci sono arrivato, lui determina l'ASSE X-Y in base al suo range, ergo, se il suo range parte da a30, a30 sara 1, e cosi via, quindi con la cella negativa mi saliva fino alla cella p1, che ho usato come prova.
    Amici miei che dite mi sono meritato un piccolo aiuto?
    Ora che ho capito (a grandi linee) come funziona, mi piacerebbe che, mi si colorasse la cella, effettivamente come ora, se clicco una cella qualsiasi dentro una dato "range", ma che si cancelli, e ritorni il colore di default di quella cella, appena clicco altrove, che presumibilmente sarà un' altra sezione, se clicco OLTRE i range impostati non fa niente.
    Che funzione mi serve per implementare nel codice, cosi sistemo tutto, anche il comando per dare ad una cella, una dato nome?
    es: U1, ospiterà i nomi delle strutture, se clicco su un range, ho una sfilza di numeri, e gli facciamo cambiare colore, cosi vedo su quale struttura sono posizionato, ed in piu, sulla cella U1, mi scrive il nome, della struttura, che per esempio si trova in F5.

    Codice: 
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Intersect(Target, Range("sezion1")) Is Nothing Then   'primo intervallo su cui verificare se la cella Target rientra, se non rientra, allora
     GoTo 10 'sostituiamo Exit Sub con GoTo 10, e andremo alla riga 10:
     End If
     If ActiveCell <> "" Then
     ActiveCell.Interior.ColorIndex = 3
     Else
     ActiveCell.Cells.Value = "sz1"
     End If
    10:    'indice riga
     If Intersect(Target, Range("selection2")) Is Nothing Then 'ora si verifica se Target è compreso in questo intervallo, se non è compreso usciamo
     GoTo 20 'sostituiamo Exit Sub con GoTo 10, e andremo alla riga 10:
     End If
     If ActiveCell <> "" Then
     Sheets("Foglio1").Range("selection2").Cells(-8, 16).Interior.ColorIndex = 3
     Else
     ActiveCell.Cells.Value = "sz2"
     End If
    20:
     If Intersect(Target, Range("sezion3")) Is Nothing Then 'ora si verifica se Target è compreso in questo intervallo, se non è compreso usciamo
     Exit Sub   'con exit sub;  altrimenti continuano le istruzioni
     End If
     If ActiveCell <> "" Then
     ActiveCell.Interior.ColorIndex = 2
     Else
     ActiveCell.Cells.Value = "sz3"
     End If
     End Sub
    DRACOSCRIGNO, CHE SODDISFAZIONE ;))) UN GRAZIE SPECIALE, SEI STATO TROPPO GENTILE.. SENZA IL TUO AIUTO... HAI VOGLIA.....

  25. #22
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    bene. come sempre accade. mon appena raggiunto il punto critico, il manto statico dell incomprensione diventa slavina d azioni a catena.
    sono in pausa pranzo al cellulare quindi non posso che rimandare migliori approfondimenti.
    mi preneva solo di dirti un paio di cose:

    Non itilizzare i salti incondizionti Goto.
    sono un pessimo modo di programmare ed un ottimo modo per creare casotti e perdersi.
    se non trovi altro modo significa solo che stai approciando nel modo scorretto.

    il costrutto if then else o il select case, sono fatti apposta per non utilizzare salti incondizionati.


    per motivi analoghi non utilizzare i nomi per identificare le celle o i gruppi di celle; o, almeno, non utilizzarli in quel modo.

    le celle vanno identificate attraverso le loro coordinate effettive:

    un rettangolo di celle -> range("A1:C10")
    un insieme di celle -> union(range("A1", range("b1:c3"), range("Z10"))

    ...
    puoi definire dei nomi di variabili per semplificare la cosa ma alla base ci deve sempre essere range()

    buono studio e a presto :)

  26. #23
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    1468
    Versione Office
    office pro 2010
    Utile ricevuti
    336
    Utile dati
    180

    Re: macro che azzera momentaneamente delle celle?

    Eccomi a cercare di darti un altro paio di consigli utili e, probabilmente molto importanti per quello che comporta la manutenibilità del tuo listato nel tempo. A dire il vero c'è anche una cosa che ho notato che, se la correggi, ti salva da un ulcera da stress

    1 NON UTILIZZARE I NOMI DEL FOGLIO DI CALCOLO

    Come ti avevo gia detto oggi, NON utilizzare i nomi del foglio di calcolo. Nel listato ci devono essere SOLO cose che fanno parte del listato. Questo, non perchè altrimenti non funzionano, ma perchè se ti capita di cambiarle o eliminarle anche solo per caso o per sbaglio, rischi di corrompere il buon funzionamento del programma.
    Certo, ci sono volte in cui la cosa si rende necessaria, ma non certo in questo caso.

    Gli ogeetti, all' interno di un programma (le celle, i fogli, tutto, all' interno di un programma è un oggetto) vanno trattati, modificati, elaborati in modo diretto o attraverso delle variabili.

    In linea di massima si utilizzano delle variabili che rappresentano i nostri oggetti (ora le nostre celle) le quali vengono definite all' inizio del programma.
    Questo fa si che, nell' eventualità che si debbano apportare delle correzioni, queste avvengano in un solo luogo e non in molteplici.

    A tale esempio prendiamo le tue 3 sezioni di celle.

    la prima cosa che farai sarà definire 3 variabili che conterranno le tue tre sezioni di celle.
    Poi, assegnerai ad ognuna delle tre variabili, una determinata sezione di celle.

    Codice: 
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim Sezione1 As Range
        Dim Sezione2 As Range
        Dim Sezione3 As Range
        
        Set Sezione1 =Range("P10:Q20")
        Set Sezione2 =Range("H14:I24")
        Set Sezione3 =Range("J14:K24")
    
     End sub
    A questo punto utilizzerai le tue variabili come se fossero i tuoi Range(...)

    ed il listato, prendendo come esempio il primo esercizio diventerebbe:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Sezione1 As Range
    Dim Sezione2 As Range
    Dim Sezione3 As Range

    Set MiaCella =Range("A1")

    If Not Intersect(Target, MiaCella) Is Nothing Then
    MsgBox prompt:="Ciao. Io sono qualcosa di scritto"
    End If
    End Sub

    In questo modo, capirai, per quanto possa essere lungo il listato, nel caso dovessi fare delle correzioni, queste dovrebbero essere apportate in un unico punto e non su tutto il listato.


    2 NON UTILIZZARE I SALTI INCONDIZIONATI

    Ci sono dei casi in cui è necessario utilizzarli ma vengono veramente utilizzati in casi specifici e proprio perchè non se ne può fare a meno.
    Quello che ti ha portato all' utilizzo dei salti è il non aver capito il costrutto if then else che ti ho indicato più sopra.

    Utilizziamo una sorta di pseudo codice per capire il ragionamento
    Codice: 
    
    A <- scegli un numero
    
    SE A è pari ALLORA
        SE è divisibile per 3 ALLORA
             msgBox "il numero è divisibile sia per 3 che per 2"
        ALTRIMENTI
             msgBox "il numero è divisibile SOLO per 2"
        FINE DEL SE
    ALTRIMENTI
        msgBox "Il numero non è divisibile NE per 3 NE per 2"
    FINE DEL SE
    E vediamone il risultato di implementazione finale:

    Codice: 
    Sub prova()
        Dim A As Long
        A = 4
        
        If A Mod 2 = 0 Then
            If A Mod 3 = 0 Then
                 MsgBox "il numero: " & A & vbCrLf & " è divisibile sia per 3 che per 2"
            Else
                 MsgBox "il numero: " & A & vbCrLf & " è divisibile SOLO per 2"
            End If
        Else
            MsgBox "il numero: " & A & vbCrLf & " NON divisibile NE per 3 NE per 2"
        End If
    End Sub
    Per farlo funzionare basta che lo copi ed incolli e, come gia spiegato più sopra, assicurandoti che il cusrore sia ll' interno della SubRoutine, premi:
    F5 per l' esecuzione completa
    F8 per vedere, passo passo, il flusso

    Cambia i valori di A con 6, 5 e 4 per vedere tutte le possibili soluzioni.


    Il flusso del programma non compie mai salti incondizionati ma viene sempre processato da una condizione:

    Codice: 
    E' pari? -> Si -> E' divisibile per 3? -> Si -> Allora è divisibile per 3 ed anche per 2
       |                           |
      NO                        NO
       |                           |
       |                            \-----> Allora è divisibile SOLO per 2 
       |           
       \------> Allora NON è divisibile Ne per 3 NE per 2
    Da notare c'è il concetto di annidamento. Quando dicevi che il "sistema" ti rimproverava di volere un "END IF" in più era perchè non era in più.
    Ogni blocco deve APRIRSI e RICHIUDERSI

    SUB -> END SUB
    IF -> END IF
    SELECT -> END SELECT

    Non ti avevo ancora detto niente perchè speravo che con l' aumento di complessità lo facessi in automatico:
    SFORZATI di indentare il codice.
    Fallo non solo per te ma anche per chi ti legge e ricorda che chi ti legge, il più delle volte, sei tu stesso. -> wikipedia


    3 - ATTENDO AL GIUSTO UTILIZZO DI INTERSECT altrimenti ci impazzisci come è successo a me

    LA scrittura corretta, nel tuo caso è:
    If Not Intersect(Target, Sezione1) Is Nothing Then ...

    E NON come hai scritto tu:
    If Intersect(Target, Sezione1) Is Nothing Then

    Cerco di raccontartela a mio modo smembrando questa riga di comando:

    IF Not Intersect(Target, Sezione1) IS Nothing Then

    "If" e "Then" non mi pare il caso di parlarne. in teoria sai di cosa fanno parte.
    NOT è un operatore Booleano ed il suo compito è quello di negare il risultato ottenuto dall' espressione alla sua destra.

    Esempio:
    5 < 8 = Vero
    Not 5<8 = Falso (perchè è si, vero che 5 è minore di 8 ma inverto il risultato per via del NOT, oppure, come ci faceva notare il nostro prof di mate:

    5<8 ( E' VERO che 5 è minore di 8) => Si è VERO
    Not 5<8 (Non è vero che 5 è minore di 8) => No è FALSO Un elogio a Bragaglia



    Intersect(Target, Sezione1)

    Intersect da due risultati ben distinti. Se l' intersezione NON è NULLA, quindi se esiste almeno una cella in comune tra i suoi argomenti allora restituisce un oggetto Range() con tutte le caratteristiche di un oggetto range()
    Altrimenti restituisce Nothig, che vuol dire che non ha trovato neanche una cella.

    IS

    l' operatore IS, lo hai adoperato per errore è un operatore di confronto per gli oggetti Lo si può tradurre con "E' nel senso di Essere. per determinare se due variabili contengono il riferimento allo STESSO oggetto di memoria.

    IS Nothing

    Quindi, da risultato Vero se ciò che è a sinistra di esso punta a Nothing

    ...
    Quindi

    (Intersect(Target, Sezione1) is nothing) = NON VERO quando le celle che selezioniamo NON sono quelle che cerchiamo

    Not (Intersect(Target, Sezione1) is nothing) = VERO quando le celle che selezioniamo sono quelle che cerchiamo

    Quindi if Not intersect(target, Sezione1) Is Nothing Then ... Ricorda

    .... Mi sono perso... sarà l' ora...

    DAi.. riprova... Ih ih ih ih ih




    Eccoti uno scheletro gia funzionante dove devi solo modificare i riferimenti alle celle.

    NOTA che è indentato
    NOTA l' istruzione OPTION EXPLICIT che ti darà un pò fastidio all' inizio ma abituati a vederla sempre scritta come prima istruzione in ogni sezione del tuo progetto.
    Tra l' altro nelle opzioni di Office c'è modo di automatizzare la sua presenza.

    Codice: 
    Option Explicit
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim Sezione1 As Range
        Dim Sezione2 As Range
        Dim Sezione3 As Range
        
        Set Sezione1 = Range("P10:Q20")
        Set Sezione2 = Range("H14:I24")
        Set Sezione3 = Range("J14:K24")
        
        If Not Intersect(Target, Union(Sezione1, Sezione2, Sezione3)) Is Nothing Then
            MsgBox prompt:="In questo momento hai cliccato una sezione. Non so ancora quale ma una l' hai calpestata"
            If Not Intersect(Target, Sezione1) Is Nothing Then
                MsgBox prompt:="Adesso so che sei entrato nelal sezione1"
            ElseIf Not Intersect(Target, Sezione2) Is Nothing Then
                MsgBox prompt:="Adesso so che sei entrato nelal sezione2"
            ElseIf Not Intersect(Target, Sezione3) Is Nothing Then
                MsgBox prompt:="Adesso so che sei entrato nelal sezione3"
            Else
                MsgBox prompt:="Questo messaggio non apparirà mai perchè non è contemplato nel If del primo livello"
            End If
        End If
    End Sub

  27. #24
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Ciao dracoscrigno,
    Ieri non sono riuscito a connettermi, grazie per le spiegazioni dettagliate, mi servivano davvero tanto, almeno per avere un punto di inizio su cui partire, ho capito il ragionamento sul costrutto if else ecc e appreso che è meglio evitare l' utilizzo del goTo, quanto meno per i miei obiettivi.
    Tramite il tuo codice, ho inserito alcune parti, ed ora posso dire finalmente che va tutto, mi sono sforzato di capire come non perdere la porzione di codice che avevo messo (passata sempre qui nel forum) che mi eseguiva un ricerca verticale, alla fine, ho pensato, come dicevi giustamente tu, seguo l' inizio e la fine di tutti gli if end if, e PRIMA dell' uscita generale lo piazzo li, difatti va senza problemi.
    SONO SICURO che ci sono altri modi, ed il mio è un arrangiamento, ma ho risolto cosi il coloramento della cella quanto clicco una delle 10 sezioni

    Codice: 
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim Sezione1 As Range
        Dim Sezione2 As Range
        Dim Sezione3 As Range
        Dim Sezione4 As Range
        Dim Sezione5 As Range
        Dim Sezione6 As Range
        Dim Sezione7 As Range
        Dim Sezione8 As Range
        Dim Sezione9 As Range
        Dim Sezione10 As Range
            
            
        Set Sezione1 = Range("A3:AA39")
        Set Sezione2 = Range("A40:AA76")
        Set Sezione3 = Range("A77:AA113")
        Set Sezione4 = Range("A114:AA150")
        Set Sezione5 = Range("A151:AA187")
        Set Sezione6 = Range("A189:AA224")
        Set Sezione7 = Range("A227:AA261")
        Set Sezione8 = Range("A263:AA298")
        Set Sezione9 = Range("A300:AA335")
        Set Sezione10 = Range("A337:AA372")
        
        
    If Not Intersect(Target, Union(Sezione1, Sezione2, Sezione3, Sezione4, Sezione5, Sezione6, Sezione7, Sezione8, Sezione9, Sezione10)) Is Nothing Then
    
    
    
    
    If Not Intersect(Target, Sezione1) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("B1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione2) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("C1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione3) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("D1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione4) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("E1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione5) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("F1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione6) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("G1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione7) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("H1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione8) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("I1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione9) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("J1").Interior.ColorIndex = 3#
    ElseIf Not Intersect(Target, Sezione10) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex = 2#
    Range("K1").Interior.ColorIndex = 3#
    
    
    Else
    
    
    End If
    End If
    
    
    
    
    If Selection.Cells.Count > 1 Then Exit Sub                                      'attivare per evitare selezioni multiple
    If Intersect(Target, Range("B1:M1")) Is Nothing Then Exit Sub                   'interrompi macro se siamo fuori range
    Range("S1") = Application.VLookup(Target.Value, Range("CN3:CO12"), 2, False)   'esegui un Cerca.Vert
    
    
    End Sub
    Cè solo una cosa che non mi è chiara, io utilizzo un cerca verticale, ma provando e riprovando senza successo, ho cercato di implementare una cosa semplice "da dire", quando clicco su un range, oltre a cambiarmi la cella di colore, in un' altra cella, mi scrivi il NOME che trovi scritto in quell' altra cella..
    Ho messo la stringa, il range, MA, e qui scatta il problema:

    - se metto come fine della stringa per es = "v3" //il programma NON MI LEGGE E RICOPIA LA CELLA V3, ma scrive proprio "v3"
    - se metto senza apici= v3 //mi da un errore

    Ciao, e grazie ancora per il l' aiuto!!!

  28. #25
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: macro che azzera momentaneamente delle celle?

    no ho capito cosa è v3, se è l'indirizzo di una cella devi usare Range("v3"), se è invece una variabile devi usare v3

  29. #26
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Ciao Patel!!!
    Praticamente V3 rappresenta nel mio esempio quella cella in cui ho scritto un "determinato nome", che vorrei fosse ricopiato su un' altra cella.
    Molto banalmente è come se su excel, vado su A1 e ci scrivo "ciao", poi prendo una cella a caso, e ci scrivo =A1 //in quella cella vedrò scritto "ciao"

    Non riesco a capire come dialogare con queste celle, per fargli ricopiare il nome che scrivo in determinate celle, esattamente quello che succede con cerca.verticale.

    es, in queste celle ci scrivo:
    a1 (ciao)
    a20 (oggi)
    a40 (è)
    a60 (giovedì)

    Con il codice sopra scritto, ora, per ogni "sezione" che ho impostato, ho un cambio di colore della cella, raffigurane una dato numero, quindi vorrei solo, "inserire" una stringa, per far si che, cliccando sempre nella zona di range selezionato, che è già stata impostata, il codice mi vada a leggere il nome su a1 (per esempio) e me la riporti su una cella (sempre la stessa per TUTTE le scritte), es G1.
    clicco range 1 mi esce in G1 "ciao"
    clicco range 2 mi esce in G1 "oggi"
    e così via ...
    Grazie ;)

  30. #27
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: macro che azzera momentaneamente delle celle?

    mi parli di v3 e non vedo questa cella nei codici che hai postato, ora invece parli di a1,a20,a40,a60 quindi non ci capisco più nulla

  31. #28
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Ciao, certo, non cè nel codice perchè non andando niente, l' ho tolta altrimenti non posso usare il mio foglio..
    Questa è una porzione del mio codice;

    If Not Intersect(Target, Sezione1) Is Nothing Then
    Range("B1:K1").Interior.ColorIndex=2#
    Range("B1").Interior.ColorIndex=3#

    Range("S1")="V114" // Qui volevo appunto mettere la condizione che mi consenta di avere il CAMBIO DI NOME sulla cella S1, tutte le volte che seleziono una sezione diversa, chiaramente, questa è una sezione, nell' altra sezione, rimarrà immutata la cella S1 che contiene il nome, ma verrà preso non più da V114 ma da un' altra cella, mi basterebbe capire come metterle in dialogo, poi tutte le altre le sistemo io con calma.



    Poi segue l' altra condizione ecc ecc, per 10 volte, siccome ho 10 sezioni..

    Spero di essermi spiegato bene :)

  32. #29
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: macro che azzera momentaneamente delle celle?

    mi spiace, ma tu cambi le carte in tavola continuamente ed io non ti seguo

  33. #30
    L'avatar di corfurio
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    brescia
    Età
    28
    Messaggi
    95
    Versione Office
    2007
    Utile ricevuti
    0
    Utile dati
    4

    Re: macro che azzera momentaneamente delle celle?

    Scusami Patel, ma non capisco dove sbaglio a spiegare.
    Credo che si chiami "cerca verticale", cliccando su dei range nel foglio che imposto, lui (assegna) per ogni zona, una cella da leggere, e me la ricopia sulla cella S1.

Discussioni Simili

  1. Riparametrare i valori delle celle
    Di IvanMR nel forum Domande sui Grafici di Excel
    Risposte: 8
    Ultimo Messaggio: 06/02/17, 19:12
  2. [Risolto] Problemi con il ridimensionamento delle celle
    Di sergiogranero nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 28/10/16, 21:33
  3. Completamento semi automatico delle celle
    Di Wolfred78 nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 21/05/16, 10:50
  4. cambio colore del carattere e delle celle
    Di Scuotioss4 nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 10/12/15, 17:55
  5. pulsante che azzera
    Di pers78 nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 17/11/15, 20:29

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •