我正在编写一个Excel电子表格,其中包括一组使用基本=VLOOKUP()
公式的合并单元格来搜索项目并返回该项目的描述(例如,在目标单元格中选择“苹果”在单元格组中返回“红色水果”之类的内容)。但是,在许多情况下,描述内容是如此之长,以至于即使使用文本换行,它的结尾仍然会被切断。我要避免只是使单元格更大或将更多单元格合并到组中,因为该区域必须至少有十几行高,并且该部分中只有太多空间可以使用。
所以我的问题是:是否可以创建一个弹出窗口(类似于注释或数据验证弹出窗口),该窗口在选择单元格时显示公式结果的全文?
答案 0 :(得分:0)
一个答案是使用VBA,并定义您自己的功能规则。这将使您可以在答案中使用msgbox
命令。但是,显示弹出窗口的函数存在的问题是,更新某些内容后,Excel将继续重新计算所有单元格。这意味着每次您输入新值时,弹出窗口都会再次出现。
这会而且很烦人。
顺便说一句,这并不意味着您不能关闭“自动重新计算”,但这有其自身的缺点。
答案 1 :(得分:0)
是的,您可以在其注释中显示所选单元格的公式结果(即单元格的值)。
如果将其放在工作表的代码模块中,它将显示每个选定单元格的值作为注释。如果选择另一个单元格,则先前的注释将被删除。请注意:如果您另外使用常规注释,则这些注释将被此代码删除。
您可以限制此功能e。 G。到工作表上的预定义范围或带有公式的单元格(请参见代码中的说明)。
Option Explicit
Private cmt As Comment
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim MonitoredCells As Range
Dim c As Range
' Comments are shown as red triangle, all hidden by default:
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
' Delete previous comment, if any
If Not cmt Is Nothing Then cmt.Delete
' limit this functionality to e. g. columns A:C by this:
Set MonitoredCells = Intersect(Target, Target.Parent.Range("A:C"))
If Not MonitoredCells Is Nothing Then
Set c = MonitoredCells(1) ' Do it for the first selected cell only
' limit this functionality to cells with formulas:
If c.HasFormula Then
If c.Comment Is Nothing Then
Set cmt = c.AddComment
Else
Set cmt = c.Comment
End If
cmt.Text Text:=CStr(c.Value)
c.Comment.Visible = True
End If
Set c = Nothing
End If
End Sub
如果单元格的公式包含CHAR(10)换行符,请尝试通过以下方式自动调整注释的大小:
cmt.Shape.TextFrame.AutoSize = True
如果自动调整大小的注释仅是一行,则自动调整大小没有用。在这种情况下,可以在显示之前按照以下公式扩展它的大小。默认大小为100.8 x 72点。接下来的宽度加倍,并将高度大约扩展到必要的字符数,但至少扩展到默认高度:
cmt.Shape.Width = 200
cmt.Shape.Height = WorksheetFunction.Max(72, 0.35 * cmt.Shape.TextFrame.Characters.Count)