Имя листа excel в ячейку vba excel

Имя Листа Из Ячейки

NIC

Дата: Суббота, 20.04.2013, 15:28 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


День добрый, можно ли каким то способом, желательно без применения макросов, изменять имя Листа из ячейки этого листа, или даже из соседнего!!???
Заранее СПАСИБО!!!

 

Ответить

NIC

Дата: Суббота, 20.04.2013, 23:16 |
Сообщение № 2

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


Некорректно объяснил, или хочу невозможное??? cool

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 00:01 |
Сообщение № 3

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Цитата (NIC)

без применения макросов

Цитата (NIC)

хочу невозможное

Макросом можно, но нужен файл и примерный алгоритм работы макроса.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMВоскресенье, 21.04.2013, 10:32

 

Ответить

Serge_007

Дата: Воскресенье, 21.04.2013, 17:26 |
Сообщение № 4

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (NIC)

можно ли каким то способом, желательно без применения макросов, изменять имя Листа из ячейки этого листа, или даже из соседнего!

Без макросов — только вручную


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 19:12 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


Но ведь, в ячейке можно отобразить имя листа!(без макроса) biggrin

 

Ответить

Serge_007

Дата: Воскресенье, 21.04.2013, 19:14 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Без макроса отобразить можно. Изменить название листа по значению ячейки без макроса нельзя


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 20:39 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


ЖАЛЬ! Не дружу я с этими макросами, да и ознакомиться некогда! Но скоро чувствую придется! И что же нужно написать, в исходном тексте, чтобы автоматом обновлялся, если не секрет!!!??? biggrin Спасибо

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 20:59 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Посмотрите.
В ячейку А1 пишите имя и оно заменяет имя активного листа
Код в модуле Эта книга
[vba]

Код

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = «A1» Then Sheets(Sh.Index).Name = Target.Value
End Sub

[/vba]
Макросы должны быть разрешены в настройках безопасности Excel



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMВоскресенье, 21.04.2013, 21:01

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 21:48 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


КЛАСС!!! Работает! Только вот ещё какая штука, а если эта ячейка с именем будет формулой и будет обращена к другому листу, то не меняется, что нужно дописать или без вариантов!???
Заранее спасибо!!!

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 22:13 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Я вам пример файла показал, теперь ваша очередь.
Покажите в примере какая формула, в какой ячейке. Попробуем разобраться почему не работает.

О примере я писал ранее

Цитата (AlexM)

Макросом можно, но нужен файл и примерный алгоритм работы макроса.

Вы сейчас прилаживаете всего лишь пример макроса под свою задачу. Скорее всего формулы будут не нужны.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMВоскресенье, 21.04.2013, 22:21

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 22:22 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


Извиняюсь!!! В Вашем же файле!!! На первом листе! Спасибо

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 22:51 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится.
Напишите и покажите на примере что вам нужно.
Может быть так надо?
На Лист1 (не важно название) В ячейках А2, А3 и А4 пишем названия листов.
При записи в А2 меняется название Листа2
При записи в А3 меняется название Листа3
При записи в А4 меняется название Листа4
И тд.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 23:19 |
Сообщение № 13

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Вот вам пример на выше описанный алгоритм
Код в модуле Лист1
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range(«A2:A4»), Target) Is Nothing Then
     For Each iCell In Target
         Sheets(iCell.Row).Name = IIf(iCell <> «», iCell.Value, WorksheetFunction.Rept(» «, iCell.Row))
     Next
End If
End Sub

[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 23:22 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


ок! Всё написал в файле! Спасибо!

УПС! чуть припозднился!

К сообщению приложен файл:

3614143.xls
(38.5 Kb)

Сообщение отредактировал NICВоскресенье, 21.04.2013, 23:24

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 23:36 |
Сообщение № 15

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

См. Файл.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 23:39 |
Сообщение № 16

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


Вот так спасибочки!!!!

 

Ответить

AlexM

Дата: Воскресенье, 21.04.2013, 23:46 |
Сообщение № 17

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

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



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

NIC

Дата: Воскресенье, 21.04.2013, 23:53 |
Сообщение № 18

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


а можно расшифровать эту строку, так для себя, чтобы знать:

Код

sh = iCell.Row — 2 + 4 * (iCell.Column — 3)
         Sheets(sh).Name = IIf(iCell <> «», iCell.Value, WorksheetFunction.Rept(» «, sh))

Сообщение отредактировал NICПонедельник, 22.04.2013, 00:03

 

Ответить

AlexM

Дата: Понедельник, 22.04.2013, 00:12 |
Сообщение № 19

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

[vba]

Код

sh = iCell.Row — 2 + 4 * (iCell.Column — 3)

[/vba]
iCell.Row — это номер строки, в которой находится ячейка вызвавшая событие Worksheet_Change
iCell.Column — это соответственно номер столбца
По этим номерам определяем индекс листа, имя которого меняем.
[vba]

Код

Sheets(sh).Name = IIf(iCell <> «», iCell.Value, WorksheetFunction.Rept(» «, sh))

[/vba]
В этой строке листу с посчитанным индексом присваиваем имя из ячейки. Если ячейка не пустая, то имя берем из нее. Иначе имя составляем из пробелов (функция листа ПОВТОР()), количество пробелов равно индексу листа.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

NIC

Дата: Понедельник, 22.04.2013, 02:09 |
Сообщение № 20

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

0

±

Замечаний:
0% ±


Сижу догоняю, не пойму никак, получается, если листы пойдут не по порядку, то макрос не годится!??? допустим, в ячейках J29:J32 и K29:K32 должны содержать имена листов: для J29:J32 1,7,8,9 а для K29:K32 3,10,11,12 прикладываю файл!!!???
Спасибо за терпение!

P.S.

Цитата (AlexM)

Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится.

Всё пригодится!!!

К сообщению приложен файл:

1642607.xls
(27.5 Kb)

 

Ответить

Хитрости »

4 Март 2015              53387 просмотров


Как получить имя листа формулой

Задача: записать в отдельной ячейке или внутри формулы имя текущего листа(т.е. того, в котором сама функция).

В принципе это очень легко сделать простейшей функцией пользователя:

'---------------------------------------------------------------------------------------
' Procedure : GetShName
' DateTime  : 04.03.2015 10:44
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция возвращает в ячейку имя листа
'             rCell - Необязательный аргумент.
'                     Если указан - функция вернет имя листа, на котором расположена эта ячейка
'                     Если не указан - функция вернет имя листа, в котором записана функция
'---------------------------------------------------------------------------------------
Function GetShName(Optional rCell As Range)
    If Not rCell Is Nothing Then
        GetShName = rCell.Parent.Name
    Else
        GetShName = Application.Caller.Parent.Name
    End If
End Function

Синтаксис:
получение имени листа, в котором записана функция:
=GetShName()
получение имени листа, в котором расположена указанная ячейка
=GetShName(A1) — данная запись равнозначна записи без ячейки, т.к. ячейка все равно в пределах листа с самой функцией
=GetShName(Лист2!A1)


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

=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)

Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.

Теперь разберем эту формулу поподробнее
Самая основная часть — ЯЧЕЙКА(«filename»;A2). Функция ЯЧЕЙКА (CELL) с записанным первым аргументом «filename» возвращает полный путь к книге, включая имя листа и адрес ячейки, в которой записана функция:
C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1
Т.к. нам нужно только имя листа — мы применяем ПСТР (MID), которая возвращает часть текста, начиная с указанной позиции символа. ПОИСК (SEARCH) ищет нам именно эту позицию — позицию символа «]».
Если по шагам просмотреть этапы работы формулы, то будет нечто вроде:
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
Шаг1 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1)+1;31)
Шаг2 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);49+1;31)
Шаг3 =>
=ПСТР(C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1;50;31)
Шаг4 =>
=Лист1
Первый момент: почему применяю цифру 31 последним аргументом ПСТР? По факту, там необходимо указывать точное количество символов, но если указать больше — то будут взяты все символы от указанного и до последнего. Т.е можно было бы указать и 99, но 31 — это максимальное количество символов, которое можно использовать в имени листа.
Второй момент: первым аргументом функции ЯЧЕЙКА указывается текст, обозначающий тип сведений. В русской локализации он доступен на русском — «имяфайла». Однако при открытии файла с этой функцией в другой локализации тип сведений не будет переведен и функция не сможет работать. Поэтому я указываю на английском, т.к. он является универсальным в данном случае и будет работать в любой локализации. Однако нет никакой ошибки, если указать на русском: ЯЧЕЙКА(«имяфайла»;A2)

Если вторым аргументом функции ЯЧЕЙКА ничего не указывать(=ЯЧЕЙКА(«filename»)), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги). Это всегда надо учитывать. Часто функцию используют для определения имени книги, в которой сама функция записана(например, для запросов Power Query — Относительный путь к данным PowerQuery). И в какой-то момент может получиться так, что ожидаете увидеть имя книги или листа с функцией, а получаете совсем другое.

Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName(приведенная в самом начале статьи) лишена этого недостатка.

Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.


Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.

Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)

Так же см.:
Имя предыдущего листа


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Есть ли простой способ вставить имя текущего листа в одну ячейку? Как вставить имя всех листов в ячейки? В этой статье вы найдете хитрые методы решения этих проблем.

Быстро вставить имя текущего листа в ячейку с функциями

Быстро вставляйте все имена листов в ячейки с помощью VBA

Быстро вставьте имя активного листа с помощью Kutools for Excel хорошая идея3

Быстро вставляйте все имена листов с гиперссылками в ячейки в виде индекса хорошая идея3


стрелка синий правый пузырь Быстро вставить имя текущего листа в ячейку с функциями

Просто введите формулу = ПРАВЫЙ (ЯЧЕЙКА («имя файла», D2), LEN (ЯЧЕЙКА («имя файла», D2)) — НАЙТИ («]», ЯЧЕЙКА («имя файла», D2))) в любую камеру и нажмите Enter key, в ячейке отображается имя текущего листа.
документ-вставка-листов-имя-в-ячейки1

Эта формула может отображать только имя текущего листа, но не имя другого листа.


стрелка синий правый пузырь Быстро вставляйте все имена листов в ячейки с помощью VBA

Если вы хотите вставить все имена листов в ячейки, макрос VBA — хороший выбор.

Шаг 1: Удерживайте другой + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

Шаг 2: нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.

VBA для вставки имен всех листов в ячейки:

Sub SheetNames ()
Колонны (1) .Вставить
Для i = 1 To Sheets.Count
Cells (i, 1) = Sheets (i). Name
Затем я
End Sub

Шаг 3: нажмите F5 ключ для запуска этого макроса. Затем вы увидите, что имена всех листов будут указаны в столбце A текущего листа. Смотрите скриншот:
документ-вставка-листов-имя-в-ячейки2

Внимание: В коде VBA вы можете изменить Ячейки (i, 1) к другой ссылке, чтобы вставить имена листов, начинающиеся с других ячеек. Например, вставьте имена листов, начинающиеся с C3, измените его на Ячейки (i + 2, 3).


стрелка синий правый пузырь Быстро вставьте имя активного листа с помощью Kutools for Excel

Если вы хотите вставить информацию об активном листе, включая имя листа, имя книги, путь к файлу и т. Д., В ячейку или верхний / нижний колонтитул, вы можете использовать Kutools for ExcelАвтора Вставить информацию о книге.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите ячейку или диапазон, в который нужно поместить имя листа, и щелкните Кутулс Плюс > Workbook > Вставить информацию о книге.документ вставить информацию о листе 1

2. Затем выберите информацию из книги, которую нужно вставить, из Информация раздел и укажите место, из которого вы хотите разместить информацию Вставить в раздел. Затем нажмите OK.

doc 1

Вы можете щелкнуть здесь, чтобы узнать больше о вставке информации из книги.

стрелка синий правый пузырь Вставить информацию о книге в ячейку / верхний / нижний колонтитул


стрелка синий правый пузырь Быстро вставляйте все имена листов с гиперссылками в ячейки в виде индекса

Kutools for Excel‘s Создать список имен листов Утилита не только вставляет все имена листов в ячейки, но также вставляет гиперссылки на соответствующие листы.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

Шаг 1: нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов.
документ-вставка-листов-имя-в-ячейки3

Шаг 2: в Создать список имен листов диалоговом окне, укажите настройки в соответствии с вашими потребностями и нажмите OK.
документ-вставка-листов-имя-в-ячейки4

Затем вы увидите, что все имена листов вставлены в новый лист, и каждое имя листа ссылается на соответствующий лист. См. Следующие скриншоты:

Имена листов с гиперссылками

Имена листов с кнопками макроса

документ-вставка-листов-имя-в-ячейки5

документ-вставка-листов-имя-в-ячейки6

Наблюдения и советы этой статьи мы подготовили на основании опыта команды Создать список имен листов Утилита упрощает создание списка всех имен рабочих листов активной книги на новом листе, который содержит гиперссылки или кнопки макросов для быстрого перехода к другим листам. Щелкните, чтобы узнать больше об этой утилите.

стрелка синий правый пузырь Список всех имен листов с гиперссылками



Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Модератор:Naeel Maqsudov

q392

Сообщения:4
Зарегистрирован:13 янв 2005, 06:47

Требуется в ячейке рабочего листа вывести название этого листа.

С уважением,
q392.

Аватара пользователя

Игорь Акопян

Сообщения:1419
Зарегистрирован:13 окт 2004, 17:11
Откуда:СПБ
Контактная информация:

13 янв 2005, 13:45

открыть VBA (хм… а в русской раскладке получилось МИФ :) )
добавить в открытую книгу новый модуль или использовать существующий
создать функцию типа

Код: Выделить всё

Function SheetName() As String
  SheetName = ActiveSheet.Name
End Function

в ячейке написать =SheetName

Аватара пользователя

Naeel Maqsudov

Сообщения:2551
Зарегистрирован:20 фев 2004, 19:17
Откуда:Moscow, Russia
Контактная информация:

18 янв 2005, 01:33

=ПСТР(ЯЧЕЙКА(«filename»;A1);НАЙТИ(«]»;ЯЧЕЙКА(«filename»;A1))+1;65535)

Преимущества этого решения:
1. будет работать при отключенных макросах
2. автоматически пересчитывается при переименовании листа (Vba функция приведенная выше обновится только при пересчете листа, а не сразу же после переименования)

q392

Сообщения:4
Зарегистрирован:13 янв 2005, 06:47

18 янв 2005, 09:10

=ПСТР(ЯЧЕЙКА(«filename»;A1);НАЙТИ(«]»;ЯЧЕЙКА(«filename»;A1))+1;65535)
Формула дает ошибку #ЗНАЧ!

С уважением,
q392.

pashulka

Сообщения:831
Зарегистрирован:24 ноя 2004, 03:46
Контактная информация:

18 янв 2005, 09:37

По всей видимости Вы проверяете работу этой формулы в только что созданной и ещё не сохранённой рабочей книге.
До тех пор пока Вы не сохраните свою новую рабочую книгу =ЯЧЕЙКА(«имяфайла»;A1) будет = «» и следовательно Вы вряд ли получите имя рабочего листа.

q392

Сообщения:4
Зарегистрирован:13 янв 2005, 06:47

18 янв 2005, 11:55

Спасибо, формула работает.

С уважением,
q392.

Аватара пользователя

Naeel Maqsudov

Сообщения:2551
Зарегистрирован:20 фев 2004, 19:17
Откуда:Moscow, Russia
Контактная информация:

19 мар 2016, 13:51

В англоязычной версии эта формула будет выглядеть так:

=MID(CELL(«filename»;A1);FIND(«]»;CELL(«filename»;A1))+1;65535)

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

‘По уникальному имени

УникИмяЛиста

‘По индексу

Worksheets(N)

‘По имени листа на ярлычке

Worksheets(«Имя листа»)

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

‘В активной книге

Worksheets.Count

‘В любой открытой книге,

‘например, в «Книга1.xlsm»

Workbooks(«Книга1.xlsm»).Worksheets.Count

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Лист1.Name = «Реестр»

Worksheets(1).Name = «Реестр»

Worksheets(«МойЛист»).Name = «Реестр»

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Примеры:

Лист1.Visible = xlSheetHidden

Лист2.Visible = 1

Worksheets(Worksheets.Count).Visible = xlVeryHidden

Worksheets(«МойЛист»).Visible = True

Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

Понравилась статья? Поделить с друзьями:
  • Имя листа excel python
  • Имя константы в excel
  • Имя книги формула excel
  • Имя книги переменная vba excel
  • Имя книги в excel в формуле