2010-10-25 4 views

ответ

85

Помогла бы вам следующая Макро?

Sub activateSheet(sheetname As String) 
'activates sheet of specific name 
    Worksheets(sheetname).Activate 
End Sub 

В принципе, вы хотите использовать функцию .Activate. Или вы можете использовать функцию .select следующим образом:

Sub activateSheet(sheetname As String) 
'selects sheet of specific name 
    Sheets(sheetname).Select 
End Sub 
+0

«имя листа» может быть номером индекса рабочего листа (поэтому целочисленным). Даже если значение «Option Base» равно 0, оно начинается с индекса 1. –

0

Альтернативный способ (не динамически) связать текст, чтобы активировать лист без макросов, чтобы выбранная строки фактической ссылки. Вы можете сделать это, выбрав ячейку, которая содержит текст, и нажмите CTRL + K, затем выберите опцию/вкладку «Место в этом документе» и выберите вкладку, которую вы хотите активировать. Если вы нажмете текст (теперь это ссылка), настроенный лист станет активным/выбранным.

4

Я бы рекомендовал использовать индекс рабочего листа вместо того, чтобы использовать имя рабочего листа, таким образом, вы можете перебрать листы «динамически»

for i=1 to thisworkbook.sheets.count 
sheets(i).activate 
'You can add more code 
with activesheet 
'Code... 
end with 
next i 

Он будет также улучшить производительность.

+0

Как это улучшает производительность по сравнению с 'Worksheets(). Активировать'? – TylerH

+0

@TylerH Улучшает производительность над листами («Name»). – Moreno