Проверьте, имеет ли рабочий лист в книге определенное имя, и измените его, если он имеет - PullRequest
2 голосов
/ 31 марта 2019

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

Не так уж сложно, но проблема, с которой я сталкиваюсь, состоит в том, что рабочие листы, из которых я пытаюсь получить информацию, имеют одно из двух имен. Они либо Sheet1, либо T Points to Measure.

Текущее исправление, которое я пытаюсь использовать (может быть, не самое лучшее), состоит в проверке, имеет ли рабочий лист имя T Points to Measure. Если это так, то я хочу изменить его на Sheet1, чтобы все листы имели одинаковое имя.

Мой текущий код, который я пытаюсь использовать, выглядит следующим образом:

Let Copyrange = "T - ATKB000" & serialno & " Ply Count Request"
Set wb2 = Workbooks(Copyrange)
wb2.Activate
If wb2.Worksheet.Name = "T Points to Measure" Then
    wb2.Worksheet.Name = "Sheet1"
End If
Set ws2 = wb2.Sheets("Sheet1")

Однако я получаю сообщение об ошибке:

Run-time error '438':
Object doesn't support this property or method

1 Ответ

3 голосов
/ 31 марта 2019

Ваша ошибка происходит в этой строке кода:

If wb2.Worksheet.Name = "T Points to Measure" Then

специально в wb2.Worksheet.Это недопустимый синтаксис vba, так как для объекта Workbook нет метода или свойства Worksheet.

Существует свойство Worksheets, которое вам нужно.Чтобы получить доступ к отдельному рабочему листу, необходимо использовать синтаксис Worksheets с индексом или цикл по каждому рабочему листу в рабочей книге и проверять имена по отдельности.Оператор if ниже будет работать без ошибок, но он несколько избыточен.

If wb2.Worksheets("T Points to Measure").Name = "T Points to Measure" Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...