Я регулярно готую документи Excel, в яких кожна робоча таблиця містить осередок, де вказується ім'я вкладки таблиці. Вводити ім'я вкладки в цей осередок доводиться після приміщення імені на вкладці. Для невеликих таблиць це ...
Я регулярно готую документи Excel, в яких кожна робоча таблиця містить осередок, де вказується ім'я вкладки таблиці. Вводити ім'я вкладки в цей осередок доводиться після приміщення імені на вкладці. Для невеликих таблиць це труднощі не представляє, але в великоформатних таблицях кількість вкладок останнім часом стає все більше. Спробував створити функцію tabName (), яка видає величину ActiveCell.Worksheet.Name. Але при перерахунку таблиці все осередки отримують ім'я вкладки, активної в даний момент. Як отримати ім'я вкладки робочої таблиці в одній з її осередків?
Напрямок ви вибрали правильне, але відхилилися в сторону. У будь-який заданий момент активна тільки одна комірка. Коли ви робите перерахунок, кожна реалізація вашої функції на кожній таблиці отримує своє значення з вкладки, що містить цю активний осередок. Вам же замість цього потрібно ім'я робочої таблиці, звідки функція викликається.
Існує дуже зручне властивість, на жаль маловідоме. Це Application.Caller. Коли та чи інша функція викликається з осередку таблиці, значенням викликає оператора (Caller) для цієї властивості служить об'єкт діапазону (Range), що представляє цей осередок. Вихідним елементом (Parent) діапазону є робоча таблиця, де ця група знаходиться. Таким чином, ім'я таблиці, яка містить цей осередок, видає вираз Application.Caller.Parent.Name. Але коли ви змінюєте ім'я вкладки робочої таблиці, бажано, щоб одночасно оновлювалася і осередок. Для цієї мети треба у вашій функції встановити оператор Application.Volatile в стан True (Істина), т. Е. Перерахунок повинен здійснюватися автоматично.
Зручно, щоб ця функція була доступна для всіх робочих таблиць, тому потрібно помістити її в Особисту книгу макросів (Personal Macro Workbook). Якщо у вас такий книги макросів поки немає, її можна створити в Excel наступним простим способом. Почніть із запису макросу і виберіть зі спадаючого списку під заголовком Store macro in (Зберегти в), пункт Personal Macro Workbook (Особиста книга макросів). Клацніть на OK і негайно зупиніть запис макросу. Тепер ви готові будувати макрос.