2015-12-24 4 views

ответ

2

Да, вы можете непосредственно запустить нужный код в новом рабочем листе с помощью команды with

With Sheets("Sheet2") 'Sheet2 is the new sheet 
    Debug.Print .Range("A1") 
    'Run your desired code here. 
End With 
2

Да.

ThisWorkbook.Worksheets(2).Activate

Это сделает нужный рабочий лист можно установить в качестве активного. Обратите внимание: если вы не отключите Application.ScreenUpdating, как указано в другом ответе здесь, рабочие листы будут заметно перемещаться так, чтобы отображался активный рабочий лист.

Однако, я должен спросить, зачем вам нужно активировать рабочий лист? Если вы хотите запустить некоторые команды против клеток, расположенных на этом листе, вы можете сделать это без активации листа первого:

Dim ws As Worksheet 
Set ws = ThisWorkbook.Worksheets(2) 

ws.Range("A1").Value = "Hello world" 

Этот фрагмент кода будет вставлять «Привет мир» в клетку A1 на втором листе в вашей книге - не требуется активизация рабочего листа.

+0

Я просто хотел сделать код более кратким, объявив активную электронную таблицу, а затем обращаясь к ее диапазонам без необходимости явно писать префикс ws. Но, учитывая, что обновление экрана настроек для false - это единственный способ перепрыгнуть между электронными таблицами, я в конечном итоге использую ваше решение, потому что screenupdating отключает обновление строки состояния. –

+0

Использование явно объявленных ссылок всегда является плюсом, даже если это делает работу более «утомительной». В долгосрочной перспективе это хорошая привычка - для больших баз кода или проектов, которые ссылаются на множество листов, это практически необходимо. Также обратите внимание, что отключение «Application.ScreenUpdating» по-прежнему позволяет вам делать что-то со статусной панелью. – Vegard

Смежные вопросы