Ошибка определения объекта при добавлении проверки данных - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь создать проверку данных в ячейке на основе строки в качестве адреса.Эта строка сохраняется с рабочего листа.

В этом примере 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.

1 Ответ

2 голосов
/ 11 июня 2019

Я думаю, вы должны очистить любую существующую проверку, прежде чем устанавливать проверку в список.

Попробуйте изменить код на

With myRng.Offset(0, 1)
    .Validation.Delete
    .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='Lists'!" & strAddress
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...