У меня есть код VBA для изменения валидации на ячейке в зависимости от выбранной опции.VBA Validation сбивает мою книгу
Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = Sheets("lkup")
Dim VariationList As Variant
VariationList = Application.Transpose(ws.Range("Resource_List"))
For i = LBound(VariationList) To UBound(VariationList)
Next i
If Target = Range("B15") Then
If InStr(1, Range("B15"), "Resource") > 0 Then
With Range("D15").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlEqual, Formula1:=Join(VariationList, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf InStr(1, Range("B15"), "Fixed Asset") > 0 Then
Range("D15").Validation.Delete
Range("D15").ClearContents
With Range("D15").Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="100000", Formula2:="999999"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Oopps"
.InputMessage = ""
.ErrorMessage = "Your fixed asset number can only be 6 numbers"
.ShowInput = True
.ShowError = True
End With
Else
Range("D15").ClearContents
Range("D15").Validation.Delete
End If
End If
End Sub
Это работает в то время как книга открыта. Он работает нормально, никаких ошибок или чего-либо еще. Однако, когда я сохраняю и снова открываю книгу, это дает мне следующее:
Мы обнаружили, что проблема связана с некоторым содержимым в «Invoice.xlsm». Вы хотите, чтобы мы попытались восстановить как можно больше? Если вы доверяете источнику этой книги , нажмите «Да».
Затем он открывает книгу, заполняет все мое форматирование и удаляет VBA.
Я пробовал Google, но не смог перевести это на то, что у меня есть.
Приветствия,
Вы, мой друг, являются абсолютной звездой! –
Спасибо. Я узнал об EnableEvents на своем пути., Lol –