Excel VBA: ошибка 1004. Скрипт работал раньше

#excel #vba

#excel #vba

Вопрос:

После нескольких месяцев работы, ни с того ни с сего скрипт продолжает давать сбой. Может кто-нибудь, пожалуйста, проверить мой скрипт, как показано ниже:

 Sub Data_Types()
    Dim MyList(200) As String
    Dim Rows_used_Componenten_Library




    Rows_used_Componenten_Library = Worksheets("Component types").UsedRange.Rows.Count


    For h = 0 To Rows_used_Componenten_Library
        MyList(h) = Worksheets("Component types").Range("A2").Offset(h, 0).Value
    Next h

    For i = 0 To 202
        With Worksheets("Component list").Range("H2").Offset(i, 0).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(MyList, ",")
        End With
    Next i

    MsgBox "Component keuze overgenomen"

    End Sub
  

Комментарии:

1. Excel выдает ошибку в этой строке: .Добавить тип:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(myList, «,»)

2. Я не получил никакой ошибки при запуске кода с пустыми листами. Возможно, проверьте, что MyList содержится при возникновении ошибки. Возможно, также было бы неплохо проверить размер вашего листа UsedRange , поскольку вы им пользуетесь.

3. Обратите внимание, что вы можете добавить проверку в диапазон ячеек, вам не обязательно делать это отдельно для каждой ячейки. Также возможно получить диапазон значений непосредственно в массив.

4. Вы могли бы продолжать добавлять «теги» и проверять, работает ли он, пока не обнаружите, какой из них вызывает проблему.

5. Может быть, какой-то скрытый символ в тексте? Вы могли бы продолжить тестирование, чтобы сузить круг поиска. Проверьте ограничения Excel для списков проверки, хотя я сомневаюсь, что вы их превышаете.