Перейти до основного матеріалу
Note: The other languages of the website are Google-translated. Back to English

Як заблокувати вказані комірки, не захищаючи весь аркуш у Excel?

Зазвичай вам потрібно захистити весь аркуш для блокування комірок від редагування. Чи існує якийсь спосіб блокування комірок, не захищаючи весь аркуш? Ця стаття рекомендує вам метод VBA.

Заблокуйте вказані комірки, не захищаючи весь аркуш VBA


Заблокуйте вказані комірки, не захищаючи весь аркуш VBA

Припустимо, вам потрібно зафіксувати комірки A3 і A5 на поточному аркуші, наступний код VBA допоможе вам досягти цього, не захищаючи весь аркуш.

1. Клацніть правою кнопкою миші вкладку аркуша та виберіть Переглянути код з меню, що клацне правою кнопкою миші.

2. Потім скопіюйте та вставте наведений нижче код VBA у вікно Код. Дивіться знімок екрана:

Код VBA: блокуйте вказані комірки, не захищаючи весь аркуш

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target.Row = 3 Or Target.Row = 5 Then
            Beep
            Cells(Target.Row, Target.Column).Offset(0, 1).Select
        End If
    End If
End Sub

примітки: У коді, Колонка 1, Рядок = 3 та Рядок = 5 вказують, що комірки A3 та A5 на поточному аркуші будуть заблоковані після запуску коду. Ви можете змінювати їх, як вам потрібно.

3 Натисніть кнопку інший + Q клавіші одночасно, щоб закрити Microsoft Visual Basic для додатків вікна.

Тепер комірки A3 та A5 заблоковані в поточному аркуші. Якщо ви спробуєте вибрати комірку A3 або A5 на поточному аркуші, курсор буде автоматично переміщено до сусідньої правої комірки.


Статті по темі:


Найкращі інструменти для підвищення продуктивності офісу

Kutools for Excel Вирішує більшість ваших проблем і підвищує вашу продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2021 і 365. Підтримує всі мови. Легке розгортання на вашому підприємстві чи в організації. 30-денна безкоштовна пробна версія повних функцій. 60-денна гарантія повернення грошей.
вкладка kte 201905

Office Tab Надає інтерфейс із вкладками в Office і значно полегшує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (22)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Я хотів приховати формулу в клітинці O1. Будь ласка, повідомте формулу для того ж.
Цей коментар був мінімізований модератором на сайті
Шановний аджай,
Щоб приховати формулу клітинок, перейдіть за наведеним нижче гіперпосиланням, щоб отримати рішення.
https://www.extendoffice.com/documents/excel/1424-excel-hide-formulas.html
Цей коментар був мінімізований модератором на сайті
Шановний аджай,
Якщо ви хочете приховати формулу в комірці O1, не захищаючи аркуш, спробуйте наведений нижче сценарій VBA.
Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Статична Формула як рядок
Якщо Target.Address = "$O$1", Тоді
З Target
Формула = .Формула
.Value = .Value
Кінець з
Ще
З діапазоном ("O1")
Якщо ні .HasFormula Then
.Формула = Формула
End If
Кінець з
End If
End Sub

Після використання коду здається, що формула комірки O1 змінюється на результат формули. Насправді він приховує формулу з відображенням результату формули в рядку формул. І формула відобразиться, якщо код зламаний.
Цей коментар був мінімізований модератором на сайті
як я можу заблокувати діапазон рядків, скажімо, 4-46 і стовпців 8 і 10
Цей коментар був мінімізований модератором на сайті
Шановний AJ!
Якщо ви хочете заблокувати діапазон вказаних рядків і стовпців, спробуйте наведений нижче сценарій VBA.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Dim xRgEx як діапазон
Dim xRgExEach як діапазон
On Error Resume Next
Application.ScreenUpdating = Невірний
Встановити xRg = Range("H:J,4:46") 'Змініть діапазон рядків і стовпців, які ви заблокуєте, не захищаючи аркуш
Встановити xRgEx = Application.Intersect(xRg, Target)
Якщо xRgEx — нічого, вийдіть із Sub
Клітинки(1, 1). Виберіть "Вкажіть клітинку, до якої ви будете переміщатися після вибору заблокованих комірок
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Це чудовий обхідний шлях, особливо у спільних книгах, де вмикання/вимкнення захисту не підтримується. Дуже дякую.
Цей коментар був мінімізований модератором на сайті
Шановна Кристал,

Ви надали мені рішення (половину), з яким я мучився останні кілька тижнів, але мені знадобиться ще кілька підказок.

Як це можна застосувати лише до діапазону таблиці, а не до всього аркуша? Заздалегідь спасибі.
Цей коментар був мінімізований модератором на сайті
Хороший день,
Як наведений нижче код VBA, будь ласка, змініть вказаний діапазон "H:J,4:46" на діапазон таблиці, який ви хочете заблокувати лише на аркуші.
А клітинки(1,1) мають бути клітинкою за межами діапазону таблиці. Якщо клацнути будь-яку клітинку в діапазоні таблиці, курсор буде автоматично переміщено до цієї клітинки.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Dim xRgEx як діапазон
Dim xRgExEach як діапазон
On Error Resume Next
Application.ScreenUpdating = Невірний
Встановити xRg = Range("H:J,4:46") 'Змініть діапазон рядків і стовпців, які ви заблокуєте, не захищаючи аркуш
Встановити xRgEx = Application.Intersect(xRg, Target)
Якщо xRgEx — нічого, вийдіть із Sub
Клітинки(1, 1). Виберіть "Вкажіть клітинку, до якої ви будете переміщатися після вибору заблокованих комірок
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Після запуску VBA для блокування цих комірок, як їх розблокувати?
Чи потрібен код VBA для розблокування?
Цей коментар був мінімізований модератором на сайті
Привіт РЕНІК,

Ми не надаємо розблокований код VBA, зламайте код вручну, після чого область можна редагувати звичайним чином.
Цей коментар був мінімізований модератором на сайті
Шановна Кристал,

Чи може цей макрос запускатися автоматично після відкриття файлу або клацання будь-якої клітинки. Я не хочу, щоб людям доводилося запускати макрос вручну, щоб захистити необхідні діапазони.

Крім того, мені потрібно буде захистити 12 несуміжних діапазонів. Наприклад: I11:I20 і K11:K20 і M11:20 тощо... Як мені це зробити?

Останнє, і це може бути занадто багато, але чи можна застосувати захист до діапазонів прикладів, які я надав вище, АЛЕ потім розширити захист до додаткових рядків у міру додавання нових? Іншими словами, захист буде застосовано до I11:I20 і K11:K20 і M11:20, але користувач зможе додати новий рядок (рядок 21) з новими даними, але після додавання нового рядка захист буде застосовуватися до I11:I21 і K11:K21 і M11:21. Я прошу місяць? :-)

Дякую за все, що ви вже надали! Я не можу подякувати вам та іншим людям, як ви, за те, що ви поділилися своїми знаннями. Дивовижний!
Цей коментар був мінімізований модератором на сайті
Шановний Карлос,
Наведений нижче код VBA може допомогти вам вирішити проблему. Будь ласка, заповніть свої діапазони в четвертому рядку коду та натисніть клавіші Alt + Q, щоб повернутися до робочого аркуша. Потім перейдіть до іншого аркуша, а потім поверніться до поточного аркуша, щоб активувати код. Дякуємо за коментар.

Dim xRg As Range
Приватний додатковий аркуш_Activate()
Якщо xRg - це нічого, то
Встановити xRg = Union(Діапазон("I10:I20"), Діапазон("K10:K20"), Діапазон("M10:M20"), Діапазон("O10:O20"))
End If
End Sub
Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim I As Integer
Dim xRgNew As Range
Dim xRgLCell як діапазон
On Error Resume Next
Application.EnableEvents = False
Для I = 1 До xRg.Areas.Count
Встановіть xRgLCell = xRg.Areas.Item(I)
Встановити xRgLCell = xRgLCell(xRgLCell.Count).Offset(1, 0)
Якщо Target.Address = xRgLCell.Address Тоді
Якщо xRgNew — це нічого
Встановіть xRgNew = Ціль
Ще
Встановити xRgNew = Union(xRgNew, Target)
End If
End If
Далі
Встановити xRg = Union(xRg, xRgNew)
Application.EnableEvents = True
End Sub
Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Помилка Перейдіть до Exitsub
Якщо (Not Intersect(xRg, Target) Is Nothing) і (Target.Count = 1), то
Target.Offset(0, 1).Вибрати
End If
Exitsub:
End Sub
Цей коментар був мінімізований модератором на сайті
Шановна Кристал,

Щиро дякую за це! Працює чудово.

Я використав код у коментарі Карлоса, щоб автоматично запускати макрос під час відкриття файлу. Мені було цікаво, чи є спосіб мати кнопку «Скасувати» або щось подібне, що дозволяє скасувати цей код і, отже, розблокувати ті діапазони, які були заблоковані.

Я хочу, щоб вони були заблоковані більшу частину часу, але я хотів би розблокувати їх, якщо мені знадобиться змінити будь-які дані. Єдина причина, чому я не захищаю весь аркуш, полягає в тому, що, якщо я це зроблю, він деактивує можливість розгортання таблиць. Це, у свою чергу, розгорнути на лінійній діаграмі.

Велике спасибі за допомогу!
Цей коментар був мінімізований модератором на сайті
Привіт Ерін,
Ви можете вручну зламати код, натиснувши кнопку Розрив у вікні Microsoft Visual Basic для програм, щоб розблокувати ці діапазони. І запустіть код, щоб знову активувати його. Дякую за коментар.
Цей коментар був мінімізований модератором на сайті
Привіт,
Comment faire pour verrouiller de la cellule B8 à B10000?
D'avance merci de votre réponse.
Крістоф
Цей коментар був мінімізований модератором на сайті
Чи є якась функція для встановлення, наприклад, клітинки 2 рядка 13 на 900? Або мені потрібно вручну пробивати назву кожної клітинки в коді?
Цей коментар був мінімізований модератором на сайті
Здравствуйте,

Я використав код, наданий Карлосу, і він зробив саме те, що я хотів. Чи є спосіб, щоб деякі діапазони були зміщені в рядку праворуч від захищеного діапазону (як це вже робить код "Карлоса"), але інші діапазони були зміщені всередині COLUMN до клітинки безпосередньо під захищеним діапазоном? Я двічі намагався ввести код «Карлос» і змінити зміщення, але отримав різноманітні помилки.

Дякую
Цей коментар був мінімізований модератором на сайті
Привіт Чарлі,
На жаль, поки що не можу вам допомогти. Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
привіт,

Я намагався використати код для діапазонів, які ви раніше опублікували, але він не працює. Чи можете ви порадити мені, чи варто комбінувати код для діапазонів вище чи нижче?


Дякую
Цей коментар був мінімізований модератором на сайті
Я спробував не можу, приховати формулу без захисту.
Цей коментар був мінімізований модератором на сайті
Чи є спосіб, щоб цей код VBA запускався автоматично щоразу, коли хтось відкриває файл?
Цей коментар був мінімізований модератором на сайті
Привіт, Аарон! Після додавання коду збережіть книгу як книгу Excel з підтримкою макросів (клацніть філе > Зберегти як > вкажіть папку для файлу > виберіть Книга Excel з підтримкою макросів від Зберегти як введіть спадний список > зберегти). Після цього кожен раз, коли ви відкриваєте файл, код працює автоматично.
There are no comments posted here yet