我可以在Microsoft Excel的弹出窗口中显示公式结果吗?

时间:2019-02-05 18:33:43

标签: excel

我正在编写一个Excel电子表格,其中包括一组使用基本=VLOOKUP()公式的合并单元格来搜索项目并返回该项目的描述(例如,在目标单元格中​​选择“苹果”在单元格组中返回“红色水果”之类的内容)。但是,在许多情况下,描述内容是如此之长,以至于即使使用文本换行,它的结尾仍然会被切断。我要避免只是使单元格更大或将更多单元格合并到组中,因为该区域必须至少有十几行高,并且该部分中只有太多空间可以使用。

所以我的问题是:是否可以创建一个弹出窗口(类似于注释或数据验证弹出窗口),该窗口在选择单元格时显示公式结果的全文?

2 个答案:

答案 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)