#vba #excel
#vba #excel
Вопрос:
Когда я вставляю одну строку в защищенную книгу, мой код VBA, который обновляет входные сообщения проверки четырех ячеек, больше не работает … если я не снимаю защиту с рабочего листа.
Рабочий лист защищен userinterfaceonly
свойством, установленным на true
: ThisWorkbook.Sheets(1).Protect password:="fa-202a", userinterfaceonly:=True
Позвольте мне повторить, что мой код входного сообщения проверки работает нормально, пока я не вставлю строку.
Первый вызов AddNumberOfAvailableBatchesValidation
работает нормально. Код выдает ошибку, определенную приложением, при втором вызове AddNumberOfAvailableBatchesValidation
. Конкретная строка в этом подразделе, которая не выполняется, является:
.InputTitle = "Maximum of 100 Pouch Batches"
Как вы можете видеть, похоже, что у него возникла проблема с изменением существующей проверки данных диапазона NamedRanges.NumBatchesAdditional1
.
Каждая ячейка из этих четырех представляет собой одну несвязанную ячейку.
Вот полный код.
Private Sub UpdateInputMessages()
Dim numAvail As Integer
numAvail = 100 - NamedRanges.NumBatchesPrimary.Value - NamedRanges.NumBatchesAdditional1.Value - _
NamedRanges.NumBatchesAdditional2.Value - NamedRanges.NumBatchesAdditional3.Value
AddNumberOfAvailableBatchesValidation NamedRanges.NumBatchesPrimary, numAvail
AddNumberOfAvailableBatchesValidation NamedRanges.NumBatchesAdditional1, numAvail
AddNumberOfAvailableBatchesValidation NamedRanges.NumBatchesAdditional2, numAvail
AddNumberOfAvailableBatchesValidation NamedRanges.NumBatchesAdditional3, numAvail
End Sub
Private Sub AddNumberOfAvailableBatchesValidation(target As range, numberAvailable As Integer)
With target.Validation
.InputTitle = "Maximum of 100 Pouch Batches"
.InputMessage = "There are " amp; numberAvailable amp; " pouch batches available."
.ShowInput = DropdownChangeIsMultipleSelectionEligible
End With
'This is to refresh the input messages
With target
.offset(0, 1).Select
.Select
End With
End Sub
Есть идеи?
Комментарии:
1. Почему бы вашему коду не снять защиту с листа, а затем повторно защитить лист, когда это будет сделано?
2. Это, безусловно, возможно, но должно быть ненужным. Все работает нормально, пока я не добавлю эту строку.
3. Ваш код не вставляет ни одной строки
4. Это не так. Этот код работает до того, как я вручную вставлю строку, и не работает после.