Скрыть формулы excel vba

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

Скрыть формулу, но отобразить результат, не защищая лист с помощью кода VBA


Скрыть формулу, но отобразить результат, не защищая лист с помощью кода VBA

Чтобы скрыть формулы, но отображать результаты без защиты листа, сделайте следующее.

1. На рабочем листе вам нужно скрыть формулы, но отображать результаты, щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню.

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте код VBA в окно кода.

Код VBA: скрыть формулу, но отобразить результат без защиты рабочего листа

Dim xDic As New Dictionary
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Range("C1:C10")
    If xDic.Count <> xRg.Count Then
        For Each xCell In xRg
            xDic.Add xCell.Address, xCell.FormulaR1C1
        Next
    End If
    If (Target.Count = 1) And (Not Application.Intersect(xRg, Target) Is Nothing) And (Target.HasFormula) Then
        With Target
            .Value = .Value
        End With
    Else
        For Each xCell In xRg
            xCell.Formula = xDic.Item(xCell.Address)
        Next
    End If
End Sub

Внимание: В коде C1: C10 — это диапазон ячеек, внутри которого вы хотите скрыть формулы. Пожалуйста, измените его в соответствии с вашими потребностями.

3. Затем нажмите Tools
> Рекомендации…, Проверить Среда выполнения сценария Microsoft и нажмите OK в Ссылки — VBAProject окно. Смотрите скриншот:

4. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента, когда вы щелкаете по ячейке в указанном диапазоне, формула будет немедленно скрыта на панели формул.


Статьи по теме:

  • Как заблокировать указанные ячейки без защиты всего листа в Excel?
  • Как удалить формулы с листа, но сохранить значения / результаты в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (20)


Номинальный 5 из 5


·


рейтинги 1

How to hide a formula from the formula bar

Let me demonstrate two ways of hiding formulas from the formula bar


No1.

To hide the formula from the formula bar you have to set the HiddenFormula property the Range object to True

It will only work while the worksheet is protected

So the trick here is:
-> select all cells and unlock them for editing
-> select cells you want to hide formulas from and lock them
-> protect the sheet

Select all cells and unlock them for editing
-> select all cells, right click anywhere to format cells. Go to the Protection tab and unselect Locked
unlocking

Select cells you want to hide formulas from and lock them
-> select A1, right click, go to Protection tab and select Locked and Hidden
hide formulas

Protect the sheet
-> Click the Review tab, then Protect Sheet and OK ( no password necessary )
protect sheet

Now notice, you can still edit any cell except the A1. Look at the formula bar — There is no formula! Its HIDDEN!
done


This is a VBA solution:

Sub HideTheFormula()

    Dim ws As Worksheet
    Set ws = Sheets(1)

    Call IndexingSheets

    Call Setup(ws)
    Call ProtectSheet(ws)
    'Call UnprotectSheet(ws)

End Sub

Sub IndexingSheets()
    Sheets(1).Range("A1").Formula = _
    "=HYPERLINK(""#" & ThisWorkbook.Sheets(2).Name & "!A2"", ""TextHere"")"
End Sub

Sub ProtectSheet(ByRef ws As Worksheet)
    'ws.Protect userinterfaceonly:=True
    ws.Protect
End Sub

Sub UnprotectSheet(ByRef ws As Worksheet)
    ws.Unprotect
End Sub

Sub Setup(ByRef ws As Worksheet)
    With ws.Cells
        .Locked = False
        .FormulaHidden = False
    End With
    ws.Range("A1").Locked = True
    ws.Range("A1").FormulaHidden = True
End Sub

No2.

With a new spreadsheet insert this code in a new VBE(ALT+F11) Module. Execute the Main macro from the View Macros window (ALT+F8)

Sub Main()
    With Range("A1")
        .Formula = "=1+1"
    End With

    With Range("A2")
        .Formula = "=1+1"
        .Value = .Value
    End With
End Sub

After execution have a look at the sheets ranges A1 and A2
When A1 gets selected and you look at the formula bar you can see the formula =1+1,
however when you select A2 even though you have put a formula in the cell, it has been evaluated and hidden so now it displays the evaluated value (how cool!)
evaluated

The same principle applies when you are pulling a value from a closed workbook, for instance

Sub PullValueFromAClosedWorkbooksRange()
    With Range("A1")
        .Formula = "='C:UsersadminDesktop[temp.xlsm]Sheet1'!A1"
        .Value = .Value
    End With
End Sub

I would like to hide the formula bar in a specific Excel file and only in this file. I know we can do it with VBA (Application.DisplayFormulaBar = False) but I am wondering if there is another solution like editing the CustomUI file.

Usually I edit the CustomUI file for hiding ribbon, adding custom tabs, … It would be nice if we can hide the formula bar in this way.

Any suggestions?

Thanks.

asked Nov 22, 2011 at 9:05

Bronzato's user avatar

Short answer is: No, you cannot.

Unfortunately, you cannot hide it by editing the CustomUI file. The formula bar has to be hidden using VBA. That being said, you can just run the hide operation on the Workbook_open event.

Private Sub Workbook_Open() 
    Application.DisplayFormulaBar = False 
End Sub 

You can turn it on/off depending on the active sheet like so:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Name = "Sheet1" Then
    Application.DisplayFormulaBar = False
Else
    Application.DisplayFormulaBar = True
End If

End Sub

answered Nov 22, 2011 at 11:16

Gaijinhunter's user avatar

GaijinhunterGaijinhunter

14.6k4 gold badges50 silver badges57 bronze badges

2

I know it’s a 2011 issue, but the solutions shown above don’t seem to be the right ones for the problem in question.

If you modify using vba Aplication.whatelse this change applies to the entire excel app

To fix this instead of turning on/off when you open/close the document uses the sheet’s activate/deactivate events

This way when your hidden document is turned on and when you turn off swatches.

This works perfect for me, to hide status bar and formula bar.

I leave you code to see how it works

Private Sub Workbook_Activate()
    Application.DisplayStatusBar = False
    Application.DisplayFormulaBar = False
End Sub

Private Sub Workbook_Deactivate()
    Application.DisplayStatusBar = True
    Application.DisplayFormulaBar = True
End Sub

answered Aug 24, 2020 at 10:34

Javier Martin Gil's user avatar

You can accomplish this by using the workbook activate en deactivate events.
Just put Application.DisplayFormulaBar = False into the activate event and Application.DisplayFormulaBar = true in the deactivate event.

Florent's user avatar

Florent

12.3k10 gold badges48 silver badges58 bronze badges

answered Mar 14, 2012 at 12:39

Stanislaw Rutkowski's user avatar

To avoid all opened Excel sheet formula bar hidden you can go for hiding the formula for a particular excel.

Sub test()

    Sheet1.Unprotect "test"
    Range("A1").FormulaHidden = True ' range which you want to hide formula.

     'your code here
    Sheet1.Protect "test"

End Sub

enter image description here

answered Apr 12, 2013 at 15:52

Santosh's user avatar

SantoshSantosh

12.1k4 gold badges41 silver badges72 bronze badges

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

День добрый форумчане. Помогите с макросом.Нужно скрыть формулы в книге но при этом но при этом чтоб можно было вводить значения в этой книге.

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Сделать ячейки с формулами защищёнными и со скрытием содержимого, а ячейки для ввода — нет. Поставить на лист пароль. Всё. Зачем макрос — не понял.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

нет, пароль закроет доступ к заполняемым полям, а они нужны

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

Нашел вот такой макрос но он не работает
Sub Formula_Protect_with_CellValidation()
If ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas) Is Nothing Then Exit Sub
ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas).Select
With Selection.Validation
   .Delete
   .Add Type:=xlValidateCustom, Formula1:=»=»»»»»
   .ErrorTitle = «В ячейке формула!»: .ErrorMessage = «Ввод данных запрещён» & vbCrLf & «Нажмите «»ОТМЕНА»»»
   .ShowError = True
End With
End Sub

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Так не защищайте эти поля.

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#6

20.11.2018 13:01:11

Цитата
Alexandr07 написал: нет, пароль закроет доступ к заполняемым полям, а они нужны

Нет. Для всех заполняемых ячеек снимите защиту (Формат ячеек/Защита: Защищаемая ячейка — выкл.; Скрыть формулы — выкл.), а после установите защиту на лист.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

спасибо, попробую так пока не сломают

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

не удобно таким способом (( тк при изменении табличной части приходится постоянно пароль вводить а этих таблиц много

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Alexandr07, сформулируйте свою задачу, которую необходимо решить макросом и только макросом, более точно и полно. Иначе каков вопрос — таков и ответ.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

#10

20.11.2018 14:29:04

Цитата
Alexandr07 написал:
приходится постоянно пароль вводить

Зачем? Пароль будет необходим только для снятия защиты.

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

возможно сделать так чтоб макрос скрывал все формулы в книге автоматом?  

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

#12

20.11.2018 14:58:54

Цитата
Юрий М написал:
Зачем? Пароль будет необходим только для снятия защиты.

допусти мне нужно скопировать строку дополнив таблицу, меня просит ввести пароль, это была б не проблема ели только одна таблица а этих много

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Alexandr07, ну Вы же можете задать параметры (действия), которые разрешены на защищённом листе. Там же есть выбор…

 

Alexandr07

Пользователь

Сообщений: 39
Регистрация: 08.02.2018

#14

20.11.2018 15:23:29

наверно не то делаю, ругается всё равно

Я хотел бы скрыть строку формул в определенном файле Excel и только в этом файле. Я знаю, что мы можем сделать это с помощью VBA (Application.DisplayFormulaBar = False), но мне интересно, есть ли другое решение, такое как редактирование файла CustomUI.

обычно я редактирую файл CustomUI для скрытия ленты, добавляя пользовательские вкладки … Было бы неплохо, если бы мы могли скрыть панель формул таким образом.

какие предложения?

спасибо.

3 ответов


короткий ответ: нет, вы не можете.

к сожалению, вы не можете скрыть его, отредактировав файл CustomUI. Панель формул должна быть скрыта с помощью VBA. Тем не менее, вы можете просто запустить операцию скрытия в событии Workbook_open.

Private Sub Workbook_Open() 
    Application.DisplayFormulaBar = False 
End Sub 

вы можете включить / выключить его в зависимости от активного листа, например:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Name = "Sheet1" Then
    Application.DisplayFormulaBar = False
Else
    Application.DisplayFormulaBar = True
End If

End Sub

вы можете сделать это с помощью книги активировать en деактивировать события.
Просто положите Application.DisplayFormulaBar = False в событие активации и Application.DisplayFormulaBar = true в событие deactivate.

0

автор: Stanislaw Rutkowski


чтобы избежать всех открытых Excel лист формулы бар скрытые вы можете пойти на скрытие формулы для конкретного excel.

Sub test()

    Sheet1.Unprotect "test"
    Range("A1").FormulaHidden = True ' range which you want to hide formula.

     'your code here
    Sheet1.Protect "test"

End Sub

enter image description here


Понравилась статья? Поделить с друзьями:
  • Скрыть текст в ячейке excel если он не влезает в ячейку
  • Скрыть текст в тексте word
  • Скрыть строку если значение в ячейке excel
  • Скрыть строку в excel по условию без макроса
  • Скрыть строку в excel быстрые клавиши