Справочная информация
У меня есть таблица Excel с раскрывающимися списками Activex (выпадающий список), которые помогают пользователю узнать, какие варианты доступны. Я сделал это, потому что выпадающие списки валидации данных слишком малы по размеру шрифта и собирали много жалоб.
Таким образом, мое решение состояло в том, чтобы добавить комбинированные объекты, которые позволяют пользователю выбирать из ряда вариантов. Однако я должен связать комбинированные списки с ячейкой со свойством связанного элемента, чтобы и пользователь, и различные формулы могли видеть то, что было выбрано. Я также настроил исчезновение выпадающего списка, когда он не используется (во многом так же, как выпадающая кнопка проверки данных появляется только при выборе соответствующей ячейки).
Вот проблема:
Я не хочу, чтобы пользователи редактировали значение в связанной ячейке, поэтому я удостоверяюсь, что связанная ячейка заблокирована, когда выпадающий список не выбран:
Private Sub comboBox1_GotFocus()
Call unlockComboBoxTargetCell(comboBox1)
End Sub
процедура выше делает это:
If (targetComboBox.LinkedCell <> "") Then
Dim targetCell As Variant
Set targetCell = Range(targetComboBox.LinkedCell)
If Not targetCell Is Nothing And targetCell.Locked <> False Then
unlockSheet (activesheet.Name)
targetCell.MergeArea.Locked = False
lockSheet (activesheet.Name)
End If
End If
Для блокировки целевой ячейки существуют эквивалентные процедуры.
Однако всякий раз, когда вы выполняете действие «Сохранить как» в книге, кажется, что связанные и заблокированные ячейки создают проблему: Excel выдает эту ошибку на ровном месте:
«Ячейка или диаграмма, которую вы пытаетесь изменить, защищены и поэтому доступны только для чтения ...»
Эта ошибка появляется примерно два или три раза для каждой заблокированной ячейки и является связанной ячейкой для комбинированного списка.
Есть ли хороший способ преодолеть эту проблему? Прямо сейчас мое лучшее решение - оставить ячейки незапертыми и поместить проверку данных в ячейку, так что, если пользователь редактирует ячейку, ему будет, по крайней мере, отказано при вводе чего-либо недопустимого. Я мог бы убедиться, что поле со списком прикрывает связанную ячейку всякий раз, когда она выбрана, но иногда это означает наличие очень большого, раздражающего поля со списком с очень маленькой выпадающей кнопкой справа.
Возможно, я слишком разборчив в пользовательском интерфейсе?
Заранее спасибо за чтение этого длинного и сложного поста.