В некоторых случаях вам может потребоваться скрыть формулы на листе для личного использования. В этой статье говорится о скрытии формул, но отображении результатов без защиты рабочего листа в 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-дневная гарантия возврата денег.
Вкладка 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
Select cells you want to hide formulas from and lock them
-> select A1, right click, go to Protection
tab and select Locked
and Hidden
Protect the sheet
-> Click the Review
tab, then Protect Sheet
and OK ( no password necessary )
Now notice, you can still edit any cell except the A1. Look at the formula bar — There is no formula! Its HIDDEN!
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!)
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
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
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
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
12.3k10 gold badges48 silver badges58 bronze badges
answered Mar 14, 2012 at 12:39
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
answered Apr 12, 2013 at 15:52
SantoshSantosh
12.1k4 gold badges41 silver badges72 bronze badges
Alexandr07 Пользователь Сообщений: 39 |
День добрый форумчане. Помогите с макросом.Нужно скрыть формулы в книге но при этом но при этом чтоб можно было вводить значения в этой книге. |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
Сделать ячейки с формулами защищёнными и со скрытием содержимого, а ячейки для ввода — нет. Поставить на лист пароль. Всё. Зачем макрос — не понял. <#0> |
Alexandr07 Пользователь Сообщений: 39 |
нет, пароль закроет доступ к заполняемым полям, а они нужны |
Alexandr07 Пользователь Сообщений: 39 |
Нашел вот такой макрос но он не работает |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Так не защищайте эти поля. |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#6 20.11.2018 13:01:11
Нет. Для всех заполняемых ячеек снимите защиту (Формат ячеек/Защита: Защищаемая ячейка — выкл.; Скрыть формулы — выкл.), а после установите защиту на лист. <#0> |
||
Alexandr07 Пользователь Сообщений: 39 |
спасибо, попробую так пока не сломают |
Alexandr07 Пользователь Сообщений: 39 |
не удобно таким способом (( тк при изменении табличной части приходится постоянно пароль вводить а этих таблиц много |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
Alexandr07, сформулируйте свою задачу, которую необходимо решить макросом и только макросом, более точно и полно. Иначе каков вопрос — таков и ответ. <#0> |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#10 20.11.2018 14:29:04
Зачем? Пароль будет необходим только для снятия защиты. |
||
Alexandr07 Пользователь Сообщений: 39 |
возможно сделать так чтоб макрос скрывал все формулы в книге автоматом? |
Alexandr07 Пользователь Сообщений: 39 |
#12 20.11.2018 14:58:54
допусти мне нужно скопировать строку дополнив таблицу, меня просит ввести пароль, это была б не проблема ели только одна таблица а этих много |
||
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Alexandr07, ну Вы же можете задать параметры (действия), которые разрешены на защищённом листе. Там же есть выбор… |
Alexandr07 Пользователь Сообщений: 39 |
#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