Bob ha chiesto se è possibile scrivere una formula e ottenere la risposta in un commento, invece che in una cella. La risposta breve è che no, non puoi farlo con una formula. Puoi, tuttavia, farlo con una macro. Ad esempio, la seguente macro aggiunge il contenuto di due celle (A1 e B1) e poi inserisce il risultato in un commento allegato alla cella C1:

Sub MakeComment()

With Worksheets(1).Range("C1").AddComment         .Visible = True         .Text "Total of cell A1 plus cell B1 is equal to " & _           ([A1].Value) + ([B1].Value)

End With End Sub

Se preferisci eseguire la macro su un intervallo di celle, è necessario un approccio diverso. La seguente macro esegue un ciclo attraverso tutte le celle in una selezione. Se la cella contiene una formula, la macro inserisce il valore (il risultato della formula) in un commento allegato a quella cella.

Sub ValueToComment()

Dim rCell As Range     For Each rCell In Selection         With rCell             If .HasFormula Then                 On Error Resume Next                 .Comment.Delete                 On Error GoTo 0                 .AddComment                 .Comment.Text Text:=CStr(rCell.Value)

End If         End With     Next     Set rCell = Nothing End Sub

Durante il ciclo delle celle nella selezione, se una delle celle ha una formula e un commento esistente, il commento viene eliminato e sostituito con il nuovo commento che contiene il risultato della formula.

Successivamente verrà visualizzato il valore della cella e un commento con lo stesso numero. Invece di CStr puoi anche usare la funzione Format per visualizzare il valore in qualsiasi modo tu voglia.

Puoi anche creare una macro che modificherà un commento ogni volta che aggiorni il contenuto di una cella particolare. Ad esempio, supponiamo che ogni volta che qualcuno apporta una modifica nella cella C11, desideri che il risultato di ciò che si trova in quella cella venga inserito in un commento allegato alla cella F15. La seguente macro fa proprio questo:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sResult As String

If Union(Target, Range("C11")).Address = Target.Address Then         Application.EnableEvents = False         Application.ScreenUpdating = False         sResult = Target.Value         Target.ClearContents

With Range("F15")

.ClearComments             .AddComment             .Comment.Text Text:=sResult         End With         Application.EnableEvents = True         Application.ScreenUpdating = True     End If End Sub

Quando qualcuno inserisce una formula (o un valore) nella cella C11, i risultati di quella formula (o il valore stesso) vengono inseriti in un commento allegato alla cella F15. Poiché si tratta di una macro attivata da eventi, è necessario immetterla nella finestra del codice per il foglio di lavoro su cui funzionerà.

Infine, potresti voler fare in modo che la tua macro controlli un’intera colonna. La macro seguente utilizza l’evento Change di un foglio di lavoro, proprio come la macro precedente. Tuttavia, entra in azione solo se la modifica è stata apportata nella colonna F e solo se una singola cella in quella colonna è stata modificata.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub     If Target.Column <> 6 Then Exit Sub

Dim x As String     Application.EnableEvents = False     If Target.HasFormula Then         x = Evaluate(Target.Formula)

Else         x = Target.Text     End If

Target.ClearComments     If Target.Text = "" Then         Application.EnableEvents = True         Exit Sub     End If

Target.AddComment x     Target = ""

Application.EnableEvents = True End Sub

Se l’utente apporta una modifica a una singola cella nella colonna F, la macro acquisisce il risultato di ciò che è stato inserito e lo inserisce in un commento allegato a quella cella. Il contenuto della cella viene quindi eliminato.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13038) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: