2014-01-09 3 views
0

У меня есть 5 листов в файле Excel, имена листов: Main, Production, Outflow, Inflow, Options.Динамическое изменение значения ячейки Excel на основе имени активного листа

Есть ли способ, которым я могу настроить формулу на листе Options, чтобы указать имя листа, который я просматриваю сейчас?

Так что, если я просмотрю производственный лист, он поставит Production в A1 листа опций, тогда, если я нажму, чтобы просмотреть лист Outflow, он изменит A1 в листе опций, чтобы отобразить Outflow.

Пробовал поиск, но не мог найти ничего подобного в любом месте. Спасибо за любую помощь.

+0

Простой, но что происходит, когда вы просматриваете 'Options'? – Manhattan

+0

@ BK201 все еще работает, так как местный лист может иметь собственное имя листа в формуле – brettdj

+0

@brettdj: достаточно справедливо. Тем не менее, я думаю, что OP использует A1 в листе «Параметры» в качестве справочной информации для данных, которые он хочет показать. Возможно, используя его в формуле 'INDIRECT'. В любом случае, отправьте ответ. – Manhattan

ответ

1

Если предположить, что вы не хотите что-нибудь случится, если Options является выбранный, должна работать следующая подпрограмма:

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    If Sh.Name <> "Options" Then 
     ThisWorkbook.Sheets("Options").Range("A1") = Sh.Name 
    End If 
End Sub 

Если вы хотите показать Options, когда выбрано Options лист, просто удалите блок IF-THEN. :)

Обязательно скопируйте и вставьте вышеуказанное в область кода ThisWorkbook.

Сообщите нам, если это поможет.

+0

около 1 секунды :) – brettdj

+0

Это великолепно работает. – Demas

1

В ThiwWorkbook модуле добавить

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
Sheets("Options").[a1] = Sh.Name 
End Sub 

, который положит имя текущего листа в ячейку A1 листа под названием Опции

+0

+1: Очень хорошее время! Примерно то же самое. : D – Manhattan

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