Использование макроса OnEntry для создания выполняющихся итогов в комментарии к ячейке в Excel

Сводка

В Microsoft Excel можно избежать циклических ссылок при создании выполняющегося итога, сохраняя результат в нечислемой части листа. Эта статья содержит пример процедуры Microsoft Visual Basic для приложений, которая делает это путем сохранения запущенного итога в примечании ячейки.

Дополнительная информация

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.

Создание выполняющихся итогов в ячейке

  1. Откройте новую книгу в Microsoft Excel.

  2. Запустите Редактор Visual Basic (нажмите клавиши ALT+F11).

  3. В меню Вставка выберите пункт Модуль.

  4. Введите в этот модуль следующие макросы:

       ' The Auto_Open name forces this macro to run every time
       ' the workbook containing this macro is opened.
    
    Sub Auto_Open()
       '  Every time a cell's value is changed,
       '  the RunningTotal macro runs.
          Application.OnEntry = "RunningTotal"
       End Sub
    
       '----------------------------------------------------------
       ' This macro runs each time the value of a cell changes.
       ' It adds the current value of the cell to the value of the
       ' cell comment. Then it stores the new total in the cell comment.
       Sub RunningTotal()
    
    On Error GoTo errorhandler      ' Skip cells that have no comment.
    
    With Application.Caller
    
       '     Checks to see if the cell is a running total by
       '     checking to see if the first 4 characters of the cell
       '     comment are "RT= ". NOTE: there is a space after the equal
       '     sign.
             If Left(.Comment.Text, 4) = "RT= " Then
    
       '        Change the cell's value to the new value in the cell
       '        plus the old total stored in the cell comment.
                RT = .Value + Right(.Comment.Text, Len(.Comment.Text) - 4)
                .Value = RT
    
       '        Store the new total in the cell note.
                .Comment.Text Text:="RT= " & RT
            End If
          End With
    
    Exit Sub      ' Skip over the errorhandler routine.
    
    errorhandler: ' End the procedure if no comment in the cell.
          Exit Sub
    
    End Sub
    
       '--------------------------------------------------------------
       ' This macro sets up a cell to be a running total cell.
       Sub SetComment()
          With ActiveCell
       '     Set comment to indicate that a running total is present.
       '     If the ActiveCell is empty, multiplying by 1 will
       '     return a 0.
             .AddComment
             .Comment.Text Text:="RT= " & (ActiveCell * 1)
          End With
       End Sub
    
  5. После ввода макросов нажмите кнопку Закрыть и Вернуться в Microsoft Excel в меню Файл .

  6. Сохраните и закройте книгу, а затем снова откройте ее.

    Введенный макрос Auto_Open запускается при открытии книги.

  7. Выберите ячейку C3.

    Это ячейка, которая будет содержать комментарий с запущенным итогом.

  8. Выполните следующие действия, чтобы запустить макрос SetComment:

    1. В меню Сервис выберите пункт Макрос, а затем нажмите Макросы.
    2. В диалоговом окне Макрос щелкните SetComment и нажмите кнопку Выполнить.

Пример использования запущенного итога

Чтобы использовать запущенный итог, выполните следующие действия.

  1. Введите число 10 в ячейку C3.
  2. Выберите ячейку C3 и обратите внимание, что комментарий отображает "RT= 10" (без кавычек).
  3. Введите число 7 в ячейку C3.
  4. Выберите ячейку C3 и обратите внимание, что комментарий отображает "RT= 17" (без кавычек).

Удаление запущенного итога

Чтобы удалить запущенный итог, выполните следующие действия.

  1. Выберите ячейку, содержащую итог выполнения, который требуется удалить.
  2. Щелкните ячейку правой кнопкой мыши и выберите команду Удалить комментарий в контекстном меню.