DOMANDA Excel, visualizzazione dati foglio 2 su foglio 1

Pubblicità

paperoful

Utente Attivo
Messaggi
439
Reazioni
78
Punteggio
57
Ciao a tutti,
In Excel foglio 1 ho una tabella di dati impostata in colonne per data. Con una formattazione condizionale colora le celle a seconda se il dato inserito è compreso o non compreso nel relativo range presente nella stessa riga corrispondente del foglio 2.
Però, per maggior controllo, vorrei che quando inserisco il nuovo dato in foglio 1 mi fosse visualizzato a fianco il range corrispondente. Naturalmente, quando passo alla riga successiva, il "banner" dovrebbe sostituire i dati del range con quelli relativi alla nuova riga. E' possibile con una macro?
In alternativa, è possibile visualizzare l'intera colonna range del foglio 2 e far si che questa sia sempre visibile, ma in modo dinamico, in una posizione un paio di colonne a destra dell'ultimo inserimento in foglio 1?
Spero di essere stato sufficientemente chiaro.
Grazie per ogni contributo.
 
IL CODICE UTILIZZA I COMMENTI
NELL'EVENTO Private Sub Worksheet_SelectionChange(ByVal Target As Range)

quindi metti il codice in Microsofi Excel Oggetti Foglio1 (Foglio1)
no nei moduli sotto

Codice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'   IL CODICE VISUALIZZA UN COMMENTO CON I DATI RICHIESTI

'   ESEGUE SE SONO NELLA COLONNA 2 PERSONALIZZA....
If (Target.Column = 2) Then

'   CANCELLA TUTTI I COMMENTI
    For Each cmt In ActiveSheet.Comments
        cmt.Delete
    Next cmt

    Cells(Target.Row, Target.Column).AddComment
    Cells(Target.Row, Target.Column).Comment.Visible = True

    Dim contenutoCella As String
 
    '   LEGGE LA STESSA CELLA (RIGA COLONNA) DEL "Foglio2"

    contenutoCella = Worksheets("Foglio2").Cells(Target.Row, Target.Column).Value
    Cells(Target.Row, Target.Column).Comment.Text Text:=contenutoCella

End If

End Sub
 
Ultima modifica da un moderatore:
Intanto grazie per la risposta. Purtroppo, come ho detto più volte all'interno di questo forum, le macro non sono cosa mia, quindi sono in difficoltà già dalla prima istruzione "NELL'EVENTO ...", per seguire alla successiva "... metti il codice ... in oggetti ...", questi oggetti?
1692001317883.webp
ma sicuramente le mie pene nono finiranno qui.
Se non ti è di troppo disturbo, hai la pazienza di essere elementarmente didattico?.
Grazie.
 
proviamo

il file di excel deve avere le macro attive (nel nuovo formato dovrebbe essere xlsm)

il foglio1 è un oggetto
gli oggetti possono avere delle proprietà (colore, nr celle etc)
e degli Eventi: quando avviene una determinata cosa "scattano" (es. quando è Activate, calculate etc.) il codice va inserito nell'evento cosi da venire eseguito

praticamente
apri il foglio
Sviluppo > Visual Basic > microsoft Excel Ogetti > doppio clic su "Foglio1"
il alto al centro ( ComboBox (generale)) seleziona Worksheet e nella ComboBox a destra selezione SelectioChange

verrà riportato
Codice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

riporta tra gli "estremi":

'   IL CODICE VISUALIZZA UN COMMENTO CON I DATI RICHIESTI

'   ESEGUE SE SONO NELLA COLONNA 2 PERSONALIZZA....
If (Target.Column = 2) Then

'   CANCELLA TUTTI I COMMENTI
    For Each cmt In ActiveSheet.Comments
        cmt.Delete
    Next cmt

    Cells(Target.Row, Target.Column).AddComment
    Cells(Target.Row, Target.Column).Comment.Visible = True

    Dim contenutoCella As String
 
    '   LEGGE LA STESSA CELLA (RIGA COLONNA) DEL "Foglio2"

    contenutoCella = Worksheets("Foglio2").Cells(Target.Row, Target.Column).Value
    Cells(Target.Row, Target.Column).Comment.Text Text:=contenutoCella

End If

vedi.png

ps
se non hai Visual Basic "attivato" (credo sia opzionale) puoi procedere con Sviluppo > Macro > Crea Marco (devi dargli un nome) e poi procedere come sopra

Ciao
 
Ultima modifica da un moderatore:
Ti ringrazio per lo sforzo e scusami se ti ho fatto perdere tempo, ma i tuoi percorsi non trovano corrispondenza con i menu del mio Professional Plus 2019.
Proverò nei prossimi giorni ispezionando più attentamente i vari menu.
Ancora grazie.
 
Professional Plus 2019
stessa versione

  • il file deve essere .xlsm (macro attive)
  • attiva la scheda sviluppo (di default non attiva):
Visualizzazione della scheda Sviluppo
  1. Nella scheda File passare a Opzioni > Personalizza barra multifunzione.
  2. In Personalizzazione della barra multifunzione e Schede principali selezionare la casella di controllo Sviluppo.
1692433407046.webp

1692433336062.webp

  • clicca su Sviluppo > VisualBasic

  • 1692433567982.webp

  • DOPPIO CLICK SU foglio1:

  • 1692433780599.webp

  • SELEZIONA WORKSHEET e poi seleziona SelectionChange:

  • 1692433933588.webp

  • copia il codice tra "glie estremi

  • 1692434065378.webp
 

Allegati

  • 1692433296943.webp
    1692433296943.webp
    26.3 KB · Visualizzazioni: 10
Intanto ti chiedo scusa se ogni tanto sparisco, ma non sempre riesco a dedicarmi e grazie della pazienza e del passo-passo. Credo di aver fatto come mi hai insegnato ma il risultato è questo:1692957039501.webp
Cioè (credo), mi richiede di dare un nome alla macro, ma questo crea una seconda istruzione. Se elimino la prima (la tua) istruzione e la porto all'interno della mia, l'esecuzione va in errore alla prima riga cioè al nome. Dove sbaglio?
 
Intanto ti chiedo scusa se ogni tanto sparisco, ma non sempre riesco a dedicarmi e grazie della pazienza e del passo-passo. Credo di aver fatto come mi hai insegnato ma il risultato è questo:Visualizza allegato 465059
Cioè (credo), mi richiede di dare un nome alla macro, ma questo crea una seconda istruzione. Se elimino la prima (la tua) istruzione e la porto all'interno della mia, l'esecuzione va in errore alla prima riga cioè al nome. Dove sbaglio?
Se hai attivato visual BASIC

Vai direttamente in visual basic
EVIDENZIO:
Doppio click sul foglio 1

1692963668778.png

In alto deve scegliere
A sinistra worksheet
A destra selecthionchange
(Vedi immagine)
1692963731622.png
 
Ultima modifica:
guardando l'immagine postata sta scrivendo il codice nel posto sbagliato "Modulo1"

1693048549195.webp


Devi riportare il codice in Foglio 1 (se fai doppio clic su foglio1 uno il focus si dovrebbe posizionare su Esami.xlsn - Foglio 1
(NO MODULO1)

1693048819642.webp
 

Allegati

  • 1693048696962.webp
    1693048696962.webp
    23.5 KB · Visualizzazioni: 8
  • 1693048721532.webp
    1693048721532.webp
    23.6 KB · Visualizzazioni: 8
Ciao e grazie,
purtroppo non è cambiato niente, cioè il problema rimane lo stesso:
Avvio la macro (F5)
Mi chiede un nome
Apre una seconda routine su modulo1 che va in errore alla prima riga (nome macro)
1693559823122.webp
Cosa dovrebbe succedere invece dopo aver avviato la macro?
 

Allegati

  • 1693559738159.webp
    1693559738159.webp
    41.6 KB · Visualizzazioni: 6
Se hai il pulsante visual basic per andare nella "sezione" sviluppo

NON devi avviare nessuna macro

Vai nella sezione sviluppo

"Nel foglio1"
NO NEL MODULO
1693587851245.png
SELEZIONA "worksheet", selecthionchange"

Riporti il codice

salvi
(NON DEVI LANCIARE NESSUNA MACRO)

Vai nel file excel e inserisci i dati "a fianco" dovrebbe comparire una nota con i dati del range presi dal foglio2
che poi foglio2 è da te chiamato LIMITI quindi varia il codice ("foglio2") in ("LIMITI")
 
Ultima modifica:
Ciao,
finalmente ho capito e quasi ci siamo. Ci sarebbe da sistemare:
1) Un errore mio di comunicazione: I dati del range da importare da LIMITI sono 2 (il MIN) da col. B e (il MAX) in col. C;
2) Un'incomprensione: così com'è scrive il commento il Foglio1 in col. B, mentre mi servirebbe che lo scrivesse a destra della colonna dell'inserimento in corso (quindi se inserisco i nuovi dati in AA1, dovrebbe scriverlo in AB1, con l'inserimento successivo in AB1, dovrebbe scriverlo in AC1). Dato che si tratta di un commento e non di un banner galleggiante, può andar bene anche nella cella stessa (scrivo in AA1 e ho il commento in AA1 e non serve l'istruzione che cancella i commenti precedenti, ma se non complica le cose lasciala.
Spero di non pretendere troppo.
Grazie ancora.
 
Ciao

se i limiti sono SEMPRE nella colonna B e C

il carattere ' serve per scrivere dei commenti e NON del codice quindi i comandi a destra di ' non vengono eseguiti:
'If (Target.Column = 2) Then
esegue il codice all'interno....
'End If

il codice sopra verificherebbe/eseguirebbe il codice SOLO se nella colonna 2, con il carattere ' è disattivato quindi viene lanciato per tutte le celle, eventualmente puoi attivarlo e "scegliere" le colonne




Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' IL CODICE VISUALIZZA UN COMMENTO CON I DATI RICHIESTI


' ESEGUE SE SONO NELLA COLONNA 2 PERSONALIZZA....
'If (Target.Column = 2) Then



' CANCELLA TUTTI I COMMENTI
For Each cmt In ActiveSheet.Comments
cmt.Delete
Next cmt


Cells(Target.Row, Target.Column).AddComment
Cells(Target.Row, Target.Column).Comment.Visible = True



' LEGGE LA STESSA CELLA (RIGA COLONNA) DEL "Foglio2"
Dim contenutoCella As String


contenutoCella = "MIN " & Worksheets("LIMITI").Cells(Target.Row, "B").Value & " MAX " & Worksheets("LIMITI").Cells(Target.Row, "C").Value


Cells(Target.Row, Target.Column).Comment.Text Text:=contenutoCella

'End If



End Sub
 
Ultima modifica:
Ciao,
Grazie della tua pazienza. Non sono riuscito a capire come cambiare il posizionamento del commento, ma comunque, adattando la visualizzazione dei riquadri, il commento in col. B mi rimane visibile per il confronto con l'ultima colonna inserita.
Invece la descrizione dei valori MIN e MAX funziona alla grande.
Per cui, ringraziandoti ulteriormente, chiuderei la discussione dichiarandomi soddisfatto.
 
Pubblicità
Pubblicità
Indietro
Top