#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 для списков проверки, хотя я сомневаюсь, что вы их превышаете.