Я пытаюсь создать проверку данных в ячейке на основе строки в качестве адреса.Эта строка сохраняется с рабочего листа.
В этом примере strAddress
возвращает $G$3:$G$14
.
Я получаю
Ошибка, определенная объектом
при добавлении проверки, как указано * в коде.
Это половина процедуры, а остальные повторения этого:
Sub UpdateLists(advertiser As String)
' On Error Resume Next
'need to update the other data validation based on the advertiser selected
Dim strAdvertiser As String, strAddress As String
Dim adRng As Range
Dim myRng As Range
'clear validation first
Range("I10:I12").Validation.Delete
strAdvertiser = advertiser
'now find the relevant supplier in the lists sheet
Set adRng = Sheets("Lists").Range("A:A").Find(What:=strAdvertiser)
If Not adRng Is Nothing Then
'adjust division according to advertiser
Set myRng = ActiveSheet.Cells.Find(What:="Division")
If Not myRng Is Nothing Then
'list range
strAddress = adRng.Offset(0, 1).Text
'adjust list
'**error on below line
myRng.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='Lists'!" & strAddress
Else
MsgBox "Failed to find Division", vbCritical
Exit Sub
End If
End if
End Sub
Я пытался:
a) удаление объекта myRng
и использование Sheets
, но это все равно возвращает ошибку.
b) жесткое кодирование strAddress
.
c) запустить несколько Debug.Print
на myRng
объекте, чтобы проверить его действительность.
d) использовать .Validation.Modify
первоначально, но затем перешли на .Validation.Delete
и .Validation.Add
.