Da cella a commento



  • Da cella a commento
    di oberti (utente non iscritto) data: 04/11/2015 11:34:10

    Ho un foglio1 excel con una colonna contenente codici ( A1,A2,E1,F1) .
    Ho un altro foglio2 contenente 2 colonne : 1 colonna con gli stessi codici del foglio 1 e una seconda colonna con la descrizione dei codici.

    E' possibile fare comparire le decrizioni dei codici del foglio 2 nel COMMENTO della cella codici del foglio 1 ??

    la colonna codici del foglio1 è composta da una covalida dati , quindi potrebbe variare e quindi con essa anche il commento

    GRAZIE
    CIAO



  • di Albatros54 data: 04/11/2015 12:30:32

    dove nel foglio2cella A1 c'è il testo che vuoi visualizzare.
    Ciao
    albatros54
     
    AddComment..Text Foglio2.Cells(1, 1)






  • di oberti (utente non iscritto) data: 04/11/2015 12:42:00

    Non ho capito.....
    il commento lo vorrei nelle celle del foglio1 ma con i valori presi dalle celle del foglio2

    GRAZIE
    CIAOP



  • di Marius44 data: 04/11/2015 12:54:10

    Nel foglio di classe del foglio1 inserisci la macro sotto.
    Fammi sapere. Ciao,
    Mario
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        opt = Target.Value: If opt = "" Then Exit Sub
        cmm = Application.WorksheetFunction.VLookup(ActiveCell.Text, Sheets(2).Range("tabella"), 2, False)
        Cells(Target.Row, Target.Column).ClearComments
        Cells(Target.Row, Target.Column).AddComment
        Cells(Target.Row, Target.Column).Comment.Visible = False
        Cells(Target.Row, Target.Column).Comment.Text Text:=cmm
    End If
    End Sub



  • di oberti (utente non iscritto) data: 04/11/2015 13:48:02

    Grazie @Marius44 ,
    ma mi compare l'errore : impossibile trovare la proprietà VLOOKUP per la classe Worksheetfunction

    ciao



  • di alfrimpa data: 04/11/2015 14:12:52

    Ciao Oberti ed un saluto a Mario.

    Questo messaggio di errore compare in VBA quando la funzione VLOOKUP (CERCA.VERT) non trova il valore richiesto e restituisce #N/D.

    Verifica inserendo la funzione sul foglio che restituisca il risultato atteso e soprattutto che il valore della cella attiva compaia nella prima colonna dell'intervallo "tabella" presente sul foglio2.

    Non so se sono stato chiaro.

    Alfredo





  • di oberti (utente non iscritto) data: 04/11/2015 14:36:58

    Ciao a tutti,
    ho impostato nel foglio2 il nome intervallo "tabella" per le celle A1:B10 ma ora mi compare un altro errore : errore definito dall'applicazione o dall'oggetto , con la parte del codice
    cmm = Application.WorksheetFunction.VLookup(ActiveCell.Text, Sheets(2).Range("tabella"), 2, False)
    evidenziata in giallo

    GRAZIE




  • di alfrimpa data: 04/11/2015 15:00:48

    allega il tuo file (senza dati sensibili) in modo da poter fare delle prove.

    Alfredo   





  • di oberti (utente non iscritto) data: 04/11/2015 15:28:24

    provo ad essere più preciso.......il file è molto grande.....
    Riporto quello che c'è nella sezione VBA di excel ( per i riferimenti dei fogli)

    Nella colonna L del foglio1 chiamato USCITE ho le le celle con i codici da selezionare.
    Nella colonna D e nella colonna E del foglio16 chiamato ROUTINE ho i codici ed ho la descrizione che vorrei comparisse nel commento delle celle nel foglio USCITE

    If Not Intersect(Target, Range("A1:A10")) l'ho modificata in
    If Not Intersect(Target, Range("L2:L10000"))

    mentre la riga

    cmm = Application.WorksheetFunction.VLookup(ActiveCell.Text, Sheets(2).Range("tabella"), 2, False) l'ho modificata in
    cmm = Application.WorksheetFunction.VLookup(ActiveCell.Text, Sheets(16).Range("tabella"), 2, False)

    ovviamente ho creato un range "tabella" nel foglio ROUTINE con le celle D2:E100

    GRAZIE




  • di alfrimpa data: 04/11/2015 15:32:29

    Ma qui non si vuole che si alleghi il file per intero.

    Creane uno che sia strutturalmente identico al tuo con pochi dati non sensibili che serve solo per fare dei test.

    Alfredo





  • di oberti data: 04/11/2015 16:11:05

    File allegato

    grazie



  • di Albatros54 data: 04/11/2015 16:11:28

    Prova la routine sotto, la devi adattare hai riferimenti del tuo file
    Ciao
    Albatros54 
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        opt = Target.Value: If opt = "" Then Exit Sub
        Set myrange = Worksheets("foglio2").Range("tabella")
    
       cmm = Application.WorksheetFunction.VLookup(target.Value, myrange, 2, False)
        Cells(Target.Row, Target.Column).ClearComments
        Cells(Target.Row, Target.Column).AddComment
        Cells(Target.Row, Target.Column).Comment.Visible = False
        Cells(Target.Row, Target.Column).Comment.Text Text:=cmm
    End If
    End Sub
    






  • di Albatros54 data: 04/11/2015 16:19:16

    codice adatto al tuo file, sostituiscilo nel tuo file
    Ciao
    Albatros54
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("L2:L10000")) Is Nothing Then
        opt = Target.Value: If opt = "" Then Exit Sub
        Set myrange = Worksheets("routine").Range("tabella")
        cmm = Application.WorksheetFunction.VLookup(Target.Value, myrange, 2, False)
        Cells(Target.Row, Target.Column).ClearComments
        Cells(Target.Row, Target.Column).AddComment
        Cells(Target.Row, Target.Column).Comment.Visible = False
        Cells(Target.Row, Target.Column).Comment.Text Text:=cmm
    End If
    End Sub
    






  • di alfrimpa data: 04/11/2015 16:20:00

    Eh Gioacchino avevo notato che nella precedente macro mancava il

    Set myrange......

    Lo stavo anche scrivendo ma poi non so perchè non l'ho fatto.

    Alfredo

    P.S. Ma tu le variabili non le dichiari? Non c'è Dim myrange as Range





  • di Albatros54 data: 04/11/2015 16:21:36

    @ Alfredo
    Sono allergico alle....Dichiarazioni.
    Ciao
    Gioacchino





  • di oberti (utente non iscritto) data: 04/11/2015 16:30:59

    grazie,
    funziona tutto , ma ho dovuto modificare la riga Set myrange = Worksheets("routine").Range("tabella") sostituendo "tabella" con "D2:E37"

    E' possibile ingrandire la casella dic testo per farci stare tutta la descrizioen ???

    GRAZIE
    CIAO



  • di oberti (utente non iscritto) data: 04/11/2015 16:51:11

    Risolto aggiungendo

    Cells(Target.Row, Target.Column).Comment.Shape.Width = 700

    GRAZIE A TUTTI PER LA DISPONIBILITA' E PER L'AIUTO



  • di alfrimpa data: 04/11/2015 16:51:32

    @ Albatros

    Ma quelle sono Dichiarazioni d'amore

    Queste sono altre dichiarazioni

    Alfredo





  • di Marius44 data: 04/11/2015 17:21:05

    Scusate il ritardo ma ero fuori a pranzo con amici e son tornato solo ora.
    Avevo dimenticato di "comunicare" la tabella e, principalmente, di allegare la mia prova.
    Fortunatamente, e grazie a due "Medagliati" più meritevoli di me, sembra che il problema sia stato risolto (se è così, non dimenticare di spuntare RISOLTA).
    Un saluto a tutti,
    Mario



  • di alfrimpa data: 04/11/2015 19:41:34

    Ciao Mario

    Diceva un mio vecchio professore di matematica che gli assenti hanno sempre torto

    Buon per te che ti sei fatto una bella mangiata in compagnia (e so che in Sicilia è sempre un gran bel "mangiare").

    Comunque, "medagliato" lo sei anche tu ed altrettanto meritevole.

    Alfredo

    P.S. Non so se hai notato che in Area 51 sono scomparse le discussioni relative all'aggiornamento del Corso (almeno io non le vedo più).