Inserimento dei risultati della formula in un commento (Microsoft Excel)
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: