Могу ли я показать результат формулы во всплывающем окне в Microsoft Excel? - PullRequest
0 голосов
/ 05 февраля 2019

Я пишу электронную таблицу Excel, которая включает группу объединенных ячеек, используя базовую формулу =VLOOKUP() для поиска элемента и возврата описания этого элемента (например, если выбрать «яблоко» в целевой ячейке, то получится что-токак "красный фрукт" в клеточной группе).Однако во многих случаях описание настолько длинное, что даже с переносом текста в конце оно все равно обрезается.Я хочу не просто увеличивать ячейки или объединять больше ячеек в группу, потому что эта область должна иметь высоту не менее десятка строк, и у меня в этом разделе достаточно места для работы.

Итак, мой вопрос заключается в следующем: возможно ли создать всплывающее окно (похожее на комментарий или всплывающее окно проверки данных), в котором отображается полный текст результата формулы при выделении ячейки?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Да, вы можете показать результат формул (т.е. значение ячейки) выбранной ячейки в своем комментарии.

Если вы поместите это в кодовый модуль рабочих листов , он покажетзначение каждой выбранной ячейки в качестве комментария.Если вы выберете другую ячейку, предыдущий комментарий будет удален.Помните: если вы будете использовать обычные комментарии дополнительно, они будут удалены с помощью этого кода.

Вы можете ограничить эту функциональность, например, заранее заданным диапазоном на вашем рабочем листе или ячейками с формулами (см. Пояснения в коде).

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 х 72 балла.Далее удваивает ширину и увеличивает высоту приблизительно до необходимого количества символов, но по крайней мере до высоты по умолчанию:

cmt.Shape.Width = 200
cmt.Shape.Height = WorksheetFunction.Max(72, 0.35 * cmt.Shape.TextFrame.Characters.Count)
0 голосов
/ 05 февраля 2019

Один из ответов - использовать VBA и определить собственное правило функции.Это позволит вам использовать команду msgbox с вашим ответом.Однако проблема с функциями, отображающими всплывающие окна, заключается в том, что Excel продолжит пересчет ВСЕХ ячеек, когда что-то будет обновлено.Это означает, что каждый раз, когда вы вводите новое значение, ваше всплывающее окно будет появляться снова.

Это может и будет очень раздражать.

Кстати, это не значит, что вы можете 'Выключите «Автоматический пересчет», но это имеет свои недостатки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...