Я работаю над проектом, который предполагает использование Excel VBA. К сожалению, я новичок в VBA и думаю, что запутался в коде. Вот файл, с которым я работаю.

Когда я пытался протестировать форму, она выскакивала в окне с сообщением

Run-time error '9': Subscript out of range

И когда я нажимаю "Отладка", он выделяет строку

If wantsBYO = Worksheets("Sheet2").Cells(x + 1, 8) Or wantsBYO = "Unsure" Then

Я предполагаю, что это потому, что я сделал что-то не так с инициализацией переменной, но я не уверен, как это исправить. Пожалуйста, дайте мне знать, как это сделать.

2 ответа2

1

Вы переименовали все рабочие листы в своей рабочей книге в нечто иное, чем "Sheet2", поэтому

Worksheets("Sheet2")

Приведет к ошибке. Измените "Sheet2" на любое имя листа, которое вам требуется в вашем коде, и оно не должно выдавать эту ошибку.

0

Есть две основные возможные причины отказа:

  • Рабочий лист с именем "Лист2" не существует
  • x < 0 или x > 1,048,575 (или 65 535, если вы работаете с файлом более старого формата)

Скорее всего, проблема связана с именем вашего листа, как уже упоминалось @CoRrRan. В общем, я стараюсь использовать CodeName рабочих листов вместо их имени. CodeName - это то, что отображается в Project Viewer в редакторе VBA (древовидная структура, показывающая все объекты в проекте, которые по умолчанию закреплены в левой части экрана). Кодовое имя вряд ли будет изменено обычным пользователем и, следовательно, является более надежным. Фактически, рабочий лист, скорее всего, все еще называется Sheet2 как CodeName. В этом случае вы бы изменили строку на:

If wantsBYO = Sheet2.Cells(x + 1, 8) Or wantsBYO = "Unsure" The

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .