Не удается активировать лист: «Требуется объект» - PullRequest
1 голос
/ 14 июля 2020

У меня error 424: Object Required.

Это очень простой скрипт, я не вижу, где я ошибаюсь.

Странно, это сработало много раз раньше . Я получаю эти ошибки только сегодня.

Я переименовал первый лист как «Все данные». Затем добавьте еще один лист и переименуйте его в «Список».

Ошибка возникает, когда я пытаюсь активировать лист «Список». Object Required. Я думаю, он не может обнаружить новый лист? Где я ошибаюсь? Как я уже сказал, это сработало 100 раз раньше.

    Sheets(1).Select
    Sheets(1).Name = "All Data"

    Sheets.Add After:=ActiveSheet
    Sheets(2).Select
    Sheets(2).Name = "List"
    List.Activate ' error happens here

Я также пробовал List.Select вместо Activate. Та же ошибка.

1 Ответ

3 голосов
/ 14 июля 2020

Если List не является именем VBA листа, его необходимо определить:

Dim List As Worksheet
Set List = ThisWorkbook.Worksheets("List")

или убедитесь, что имя VBA этого листа фактически изменено на List в окне свойств. редактора VBA.

  • List.Activate активирует лист с именем VBA List
  • Worksheets("List").Activate активирует лист с именем вкладки List

обратите внимание, что эти 2 системы именования полностью независимы.

Возможно, вам будет полезно прочитать Как избежать использования Select в Excel VBA .

Worksheet(1).Name = "All Data"
Worksheet.Add(After:=Worksheet("All Data")).Name = "List"
Worksheet("List").Activate ' don't use activate! see link above

или

Worksheet(1).Name = "All Data"

Dim List As Worksheet
Set List = Worksheet.Add(After:=Worksheet("All Data"))
List.Name = "List"
List.Activate ' don't use activate! see link above

Не смешивайте Sheets с Worksheets, они считаются по-разному. Sheets содержит все типы листов, такие как рабочие листы, таблицы и т. Д. c. но Worksheets содержит только рабочие листы.

Если у вас есть 2 рабочих листа и 1 лист диаграммы:

  • Worksheets.Count это 2 но
  • Sheets.Count это 3.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...