Excel переименовать лист формулой

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

#1

07.09.2015 11:55:30

У меня есть макрос:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("А1") Then
        If Target.Value <> "" Then
            If Len(Target.Value) < 30 Then
                Target.Parent.Name = Target.Value
            End If
        End If
    End If
End Sub

То есть когда изменяется ячейка А1, название соответствующего листа меняется автоматически. Но у меня в А1 не просто текст или числа. Применяется формула. И пока я не нажму снова на эту ячейке в формулу не нажму ентер, название листа не меняется. Макросу нужно вручную показывать что расчет произошел и теперь его значение другое. Пробовала сама получилось примерно вот это:

Код
Sub Ìàêðîñ1()

    Range("А1").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-10],""ää.ÌÌ.ãããã"")&R[1]C[-1]"
    Range("А2").Select
End Sub

Но совместить их правильно я не смогла. Чего-то не работает да и как совмещать правильно не знаю.
Во вложении есть файл с примером.
Z в макросах не бум бум. Надеюсь на Вашу помощь! Заранее спасибо!

P.S. В примере макрос находится: Исходный текст  —  контекстное меню листа

Прикрепленные файлы

  • Лист Microsoft Excel (2).xlsm (12.94 КБ)

Изменено: Honey07.09.2015 13:36:09

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#2

07.09.2015 12:10:28

на второй ссылке в поиске в модуль листа

Код
Private Sub Worksheet_Calculate()
    Me.Name = Me.Cells(1, 1)
End Sub

Лень двигатель прогресса, доказано!!!

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

Сергей, спасибо большое! Я была бы благодарна, если бы к тому же и объяснили еще подробней что и куда)))
Простите, я совсем чайник…

Изменено: Honey07.09.2015 12:37:11

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

вот

Лень двигатель прогресса, доказано!!!

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

Сергей,УАУ!!! То есть Вы тот макрос вообще убрали? Это так круто! Спасибо большое прибольшое!!! А можете объяснить почему так? Что означает именно этот макрос?

И еще вопрос… Если мои исходные данные находятся не в вышеуказанных ячейках а в С1 и Н3? Как тогда мне быть? Можно ли переформировывать макрос?

Изменено: Honey07.09.2015 12:44:20

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#6

07.09.2015 12:44:26

Цитата
Honey написал: А можете объяснить

неа, патамушто я тоже чайник макрос нашел поиском а лезть в справку мне лень

Лень двигатель прогресса, доказано!!!

 

Михаил Лебедев

Пользователь

Сообщений: 2855
Регистрация: 17.01.2013

#7

07.09.2015 12:47:10

Что Вы хотите, чтобы получилось?
В верхнем макросе — код, который срабатывает только на событие «Изменение (…_Change) значения в ячейке».
Это событие происходит, если Вы нажали на яч. например F2? а затем — ентер..
В самом коде написано, что отслеживаются 3 условия первое из которых — это изменение значения в яч. А1 (If Target = Range(«А1») Then).

Ваш код — это просто запись макрорекордером процесса редактирования ячейки А1, в которой записана формула.

Если Вы хотите, чтобы изменение названия листа происходило только для первого листа — внесите в модуль этого листа код, предложенный Сергеем.
Если для любого активного листа — тогда в модуль книги внесите код, похожий на код Сергея:

Код
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    With Me.ActiveSheet
    .Name = .Cells(1, 1)
    End With
End Sub

или в модуль каждого листа код Сергея.

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Но в А1 должна быть формула

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#9

07.09.2015 12:51:36

Цитата
Honey написал: Если мои исходные данные находятся не в вышеуказанных ячейках а в С1 и Н3?

А это куда применить? Из какой ячейки должно браться наименование листа?

Согласие есть продукт при полном непротивлении сторон.

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

Каждый день будут создаваться новые листы в книге. И соответственно каждый день меняется дата и фамилия в ячейках. Поэтому я хочу чтобы в зависимости кто и когда применял файл изменялось название соответствующего листа, просто чтобы было легче прослеживать и далее применять данную информацию для др формул. При этом возможно в будущем названия листов будут исходить из других ячеек на этом листе. Как мне это можно контролировать? В макросе, который я использовала до этого есть пометка из какой именно ячейки берутся данные. Можно что-то вроде этого?

 

Михаил Лебедев

Пользователь

Сообщений: 2855
Регистрация: 17.01.2013

#11

07.09.2015 12:53:15

Цитата
Honey написал: Вы тот макрос вообще убрали?

Тот макрос отслеживал 3 условия, макрос Сергея — только одно.
Условия, что А1 не пустая If Target.Value <> «» Then) и что его длина не больше 30 символов (If Len(Target.Value) < 30 Then) — он не отслеживал.

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

#12

07.09.2015 12:53:16

Цитата
Михаил Лебедев написал: Но в А1 должна быть формула

А если она будет меняться? Например не в А1 а в М6?

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

.Cells(6, 13)

Изменено: Сергей07.09.2015 12:56:00

Лень двигатель прогресса, доказано!!!

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Может лучше вести

ЛОГ

работы с файлом?

Согласие есть продукт при полном непротивлении сторон.

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

Sanja, это нужно мне также для того, чтобы путь к данным в листе я могла применять в формуле ДВССЫЛ… Мне так удобнее будет…
Но статью обязательно прочитаю. Уже взяла себе на заметку. Спасибо!!!)))

 

Михаил Лебедев

Пользователь

Сообщений: 2855
Регистрация: 17.01.2013

#16

07.09.2015 13:32:39

Цитата
Honey написал:
При этом возможно в будущем названия листов будут исходить из других ячеек на этом листе

Возможно Вам поможет вот такой вариант.
Дать собственное имя той ячейке, из которой макросом будет браться имя для листа.
Тогда эту ячейку можно перетаскивать (или «вырезать-вставить») в любое место листа.

Код
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    With Me.ActiveSheet
    .Name = .Range("ИмяЛиста")
    End With
End Sub

А вообще — Ваш подход, на мой взгляд, не очень удачный…

Цитата
Honey написал:
Каждый день будут создаваться новые листы в книге. И соответственно каждый день меняется дата и фамилия в ячейках. Поэтому я хочу чтобы в зависимости кто и когда применял файл изменялось название соответствующего листа, просто чтобы было легче прослеживать и далее применять данную информацию для др формул

Вы сколько листов планируете создать в одной книге? [рабочих дней в году] * [кол-во менеджеров]? У Вас достаточно мощный компьютер?

Прикрепленные файлы

  • Лист Microsoft Excel (2).xlsm (15.35 КБ)

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Honey

Пользователь

Сообщений: 204
Регистрация: 06.02.2015

#17

08.09.2015 05:36:11

Михаил Лебедев,спасибо большое! Ваш последний вариант — то, что нужно! Насчет остального: компьютер достаточно мощный, до этого они просто вручную переименовывали листы — у каждого свой формат, поэтому удобнее если все будет автоматически выводиться в одном. Книга создается на месяц, каждый день по 10 максимум новых листов на одного менеджера. Как обычно, макрос не позволяет создавать копии листа (н-р 01.02.10Соколов, а копия 01.02.10Соколов (2) — выдает ошибку), но это небольшая проблема))) Ведь при этом он все-равно продолжает отлично работать!
Еще раз огромное спасибо всем!!!

формула на автоматическое изменение названия листа книги

h1dex

Дата: Четверг, 15.02.2018, 13:48 |
Сообщение № 1

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

Ранг: Новичок

Сообщений: 27


Репутация:

0

±

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


Excel 2016

добрый день форумчане! и гуру экселя :)

я через поиск пробовал найти нужную мне тему, но что-то как то не получилось

может есть какая то формула или макрос на автоматическое изменение листа рабочей книги при изменении определённой ячейки?

т.е. у меня к примеру есть рабочая книга (excel-файл) «Продукты»..в ней есть 1 лист с названием «Овощи» и в ячейке к примеру B2 если вставить название «Фрукты» то лист «Овощи» автоматом переименовывается в «Фрукты»

как такое реализовать? было бы неплохо если бы это был автоматический макрос или формула

Сообщение отредактировал h1dexЧетверг, 15.02.2018, 13:49

 

Ответить

китин

Дата: Четверг, 15.02.2018, 13:54 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

[vba]

Код

Private Sub Worksheet_Activate()
Dim i&
i = 1
Sheets(i).Name = Sheets(i).[a1].Value
End Sub

[/vba]
У меня работает. в А1 то название в которое нуно переименовать

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

7163569.xlsm
(13.8 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Сообщение отредактировал китинЧетверг, 15.02.2018, 13:58

 

Ответить

h1dex

Дата: Четверг, 15.02.2018, 15:03 |
Сообщение № 3

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

Ранг: Новичок

Сообщений: 27


Репутация:

0

±

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


Excel 2016

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

я ещё забыл сказать что у меня 2 ячейки объединены в одну %)

 

Ответить

китин

Дата: Четверг, 15.02.2018, 15:05 |
Сообщение № 4

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Ну дык поменяйте
[vba]

Код

Private Sub Worksheet_Activate()

[/vba]
на
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)

[/vba]
на изменение ячейки


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

h1dex

Дата: Четверг, 15.02.2018, 15:17 |
Сообщение № 5

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

Ранг: Новичок

Сообщений: 27


Репутация:

0

±

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


Excel 2016

а как полностью будет код? у меня ошибку начало выдавать

я так вставил:

[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
i = 1
Sheets(i).Name = Sheets(i).[a1].Value
End Sub

[/vba]

 

Ответить

китин

Дата: Четверг, 15.02.2018, 15:22 |
Сообщение № 6

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

я вставил код из вашего поста в свой пример: никакой ошибки


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

китин

Дата: Четверг, 15.02.2018, 15:28 |
Сообщение № 7

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

А, у вас наверное лист не первым идет. Попробуйте так
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
Sh = Range(«A1»).Value
ActiveSheet.Name = Sh
End Sub

[/vba]
в модуль листа


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Сообщение отредактировал китинЧетверг, 15.02.2018, 15:28

 

Ответить

h1dex

Дата: Четверг, 15.02.2018, 15:43 |
Сообщение № 8

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

Ранг: Новичок

Сообщений: 27


Репутация:

0

±

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


Excel 2016

работает..спасибо

 

Ответить

Переименование рабочих листов обычно применяется в нашей работе с Excel, но пробовали ли вы когда-нибудь переименовывать рабочие листы на основе значений ячеек? Конечно, вы можете переименовывать листы вручную, но здесь в этом руководстве представлены некоторые приемы, позволяющие быстро переименовать несколько листов на основе значений ячеек, что может сэкономить ваше рабочее время.

Переименовать листы на основе определенной ячейки с VBA

Переименование листов на основе определенной ячейки с помощью функции «Переименовать несколько листов» хорошая идея3

Переименование листов на основе содержимого ячеек с помощью функции «Переименовать несколько листов» хорошая идея3


С помощью VBA ниже вы можете переименовать относительный рабочий лист на основе определенной ячейки.

1. Выберите ячейку, на основе которой вы хотите переименовать лист, в этом случае выберите «Ячейка A1». Смотрите скриншот:

документ переименовать лист 1

2. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

3. Нажмите Вставить > Модули, затем вставьте ниже код VBA в новый Модули окно.

VBA: переименование листов на основе определенных значений ячеек.

Sub RenameSheet()
'UpdatebyKutools20191129
Dim xWs As Worksheet
Dim xRngAddress As String
Dim xName As String
Dim xSSh As Worksheet
Dim xInt As Integer
xRngAddress = Application.ActiveCell.Address
On Error Resume Next
Application.ScreenUpdating = False
For Each xWs In Application.ActiveWorkbook.Sheets
    xName = xWs.Range(xRngAddress).Value
    If xName <> "" Then
        xInt = 0
        Set xSSh = Nothing
        Set xSSh = Worksheets(xName)
        While Not (xSSh Is Nothing)
            Set xSSh = Nothing
            Set xSSh = Worksheets(xName & "(" & xInt & ")")
            xInt = xInt + 1
        Wend
        If xInt = 0 Then
            xWs.Name = xName
        Else
            If xWs.Name <> xName Then
                xWs.Name = xName & "(" & xInt & ")"
            End If
        End If
    End If
Next
Application.ScreenUpdating = True
End Sub

4. Нажмите F5 ключ для запуска кода VBA. Затем все листы были переименованы по каждому относительному значению ячейки A1.

документ переименовать лист 2


Если у вас есть Kutools for Excel, вам не нужно сохранять код VBA, вы можете использовать Переименовать несколько листов функция для быстрого переименования всего рабочего листа на основе их относительных ячеек.

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

1. Включите книгу, для которой вы хотите переименовать ее имена рабочих листов.

2. Нажмите Кутулс Плюс > Рабочий лист > Переименовать листы. Смотрите скриншот:

документ переименовать лист 11

3. Затем в появившемся диалоговом окне отметьте листы, которые вы хотите переименовать, в Worksheets панели и выберите один из Переименовать вариант вам нужно, здесь я заменю имя листа, потом проверю Переименовать листы с определенной ячейкой, и выберите ячейку, которую нужно переименовать. Смотрите скриншот:

документ переименовать лист 9

4. Нажмите Ok. Теперь листы переименованы с определенным содержимым ячеек.

документ переименовать лист 2

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

документ переименовать лист 3


Работы С Нами Переименовать несколько листов of Kutools for Excel, вы также можете переименовывать листы на основе выбранного диапазона.

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

1. Нажмите Кутулс Плюс > Рабочий лист > Переименовать листы. Смотрите скриншот:

документ переименовать лист 11

2. в Переименовать несколько листов диалоговом окне необходимо указать следующие параметры:

(1) Выберите листы, которые нужно переименовать, из Список рабочих листов;

(2) Проверить Из определенного диапазона вариант и выберите значения ячеек, которые необходимо переименовать на основе;

(3) Укажите Параметры переименования, вы можете проверить Вставить перед именем исходного листа, Вставить после имени исходного листа или Заменить исходное имя листа, и вы можете предварительно просмотреть соответствующий результат в диалоговом окне.

документ переименовать лист 10

3. Нажмите Ok, а затем вы увидите, что все выбранные вами листы были переименованы на основе указанных значений ячеек.

Заменить исходное имя листа

документ переименовать лист 6

Вставить перед именем исходного листа

документ переименовать лист 7

Вставить после имени исходного листа

документ переименовать лист 8

С помощью утилиты Rename Worksheets вы также можете переименовывать рабочие листы с определенным префиксом или суффиксом. Щелкните здесь, чтобы узнать больше о переименовании нескольких листов.


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

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

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

вкладка kte 201905


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

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

офисный дно

Здравствуйте! Мне нужно чтобы лист сам автоматически переименовывался в название из ячейки. Например на листе1 есть ячейка A1. Там, в ячейке забито слово Колобок. Нужно чтобы лист1 сам переименовывался в название Колобок.


Через кнопку наверное так:
Sub Кнопка1_Щелкнуть()
    NewIm = Range(«A1»)
    Sheets(«Лист1»).Name = NewIm
End Sub

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Wasilic спасибо, но как же автоматом сделать? ???


Цитата: ActionFace от 05.01.2010, 17:32
Wasilic спасибо, но как же автоматом сделать? ???

Что значит «АВТОМАТОМ»? Если не по нажатию кнопки, то при каких условиях? При включении комьютера или открытия книги? Или ….???
Может я и не смогу ответить.

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Wasilic , впринципе и так хорошо! Спасибо! Но можно еще вопрос? У меня есть и второй лист который должен переименовываться :) Можно написать код для двух листов в пределах одного макроса? У листа2 есть свой A1 и там название предположим пчелка.


Sub Кнопка1_Щелкнуть()
    NewIm = Range(«A1»)
    Sheets(«Лист1»).Name = NewIm
    NewIm = Sheets(«Лист2»).Range(«A1»)
    Sheets(«Лист2»).Name = NewIm
End Sub

Не  понимаю смысла этой автоматизации. 
Если это одноразовая процедура, то почему не ручками — нажав правую кнопку на имени листа.
Но, если и новое имя листа будет переименовываться, то этот макрос не подойдет.

В общем то, это в тему о макросах VBA.
Внизу под сообщением есть выбор тем:
Выбери «Проекты VBA»
А много  разных ответов поищи здесь.
http://msoffice.nm.ru/faq/macros.htm

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Если автоматически, то может быть так?
Меняйте ячейки А1 в разных  листах

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


_Boroda_ Круто! :D Спасибо! Но как вы это сделали? Я не вижу ни формулы, ни макроса в присланном файле. Можете написать пошаговую инструкцию? :'(


Нужно два раза кликнуть мышой по «Эта книга» в VBA. Там макрос и сидит.

Сам макрос:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then
On Error Resume Next
Sh.Name = Sh.Range("a1")
If Not Err.Number = 0 Then MsgBox "Лист " & Sh.Name & " нельзя переименовать в " _
& Sh.Range("a1") & "," & Chr(10) & "лист " & Sh.Range("a1") & " уже есть в этой книге."
On Error GoTo 0
End If
End Sub

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


_Boroda_ Спасибо Большое все заработало! Не сочтите за наглость, а можно вас еще кое о чем спросить? Проблема такая. Мне нужно с экспортить с листа1 данные в текстовом файле с разделителем табуляции(.txt) Но вот незадача. В моих данных имеются точка с запятой ; . И при создании txt в экспортируемом тексте у меня появляются кавычки » ! Кавычки мне не нужны! Как можно от них избавиться? Я конечно могу не экспортировать, а просто скопировать и вставить, но проблема в том что у меня данные в разных ячейках и при копировании txt понимает что это разные ячейки и ставит между ними невидимую палку |. Как от нее можно избавиться?


Мне это нужно для одной управляющей програмки, которая кушает только txt.
1.Вообщем я на листе1 в ячейке A1 пишу допустим Kolobok.
2.Потом там же в A1 дописываю точку с запятой(;). 
3.Далее в ячейке B1 пишу цифру 1.
4.Затем в ячейке C1 пишу точку с запятой(;). 
5.Потом делаю экспорт в формате txt с раздел табуляции.
6.В файле txt должно получиться: Kolobok;1;
Но этот Excel делает между словом Kolobok и знаком ; невидимый промежуток в виде знака | и самое страшное, между знаком ; excel пишет кавычки!
То есть TXT файл получается: «Kolobok;»   1   «;»
Приложил пример.


Если я правильно понял, необходимо сохранить значения из ячеек разделив их знаком точка с запятой «;». Попробуйте сохранить в формате *.csv. У меня на 2003 как раз такой результат получается. Формат .csv можно просто переименовать в .txt или же напрямую открыть текстовым редактором.


Еще один вариант автонаименования листа по ячейке. Используются свойства листа:

1. В случае изменения ячейки вручную на активном листе
Private Sub Worksheet_Change(ByVal Target As Range)
    Me.Name = Me.Cells(1, 1)
End Sub

2. В случае измениния ячейки в неактивном листе посредством формулы-ссылки (в приложении третий лист)
Private Sub Worksheet_Calculate()
    Me.Name = Me.Cells(1, 1)
End Sub


Цитата: ActionFace от 13.01.2010, 23:46
Мне это нужно для одной управляющей програмки, которая кушает только txt.
1.Вообщем я на листе1 в ячейке A1 пишу допустим Kolobok.
2.Потом там же в A1 дописываю точку с запятой(;).  
3.Далее в ячейке B1 пишу цифру 1.
4.Затем в ячейке C1 пишу точку с запятой(;).  
5.Потом делаю экспорт в формате txt с раздел табуляции.

Извратиться, как написал boroda, наверное можно через дополнительный лист  формулой  «=Лист1!A1 & Лист1!B1 & Лист1!C1»  

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Цитата: ActionFace от 13.01.2010, 23:46
Мне это нужно для одной управляющей програмки, которая кушает только txt.
1.Вообщем я на листе1 в ячейке A1 пишу допустим Kolobok.
2.Потом там же в A1 дописываю точку с запятой(;). 
3.Далее в ячейке B1 пишу цифру 1.
4.Затем в ячейке C1 пишу точку с запятой(;). 
5.Потом делаю экспорт в формате txt с раздел табуляции.
6.В файле txt должно получиться: Kolobok;1;

Посмотри файлик. Выкрутишся наверняка.

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Содержание

  1. Требования к именам листов
  2. Процесс переименования
  3. контекстное меню ярлыка
  4. двойной щелчок по ярлыку
  5. Как переименовать лист рабочей книги при помощи мыши?
  6. Вставка нового листа в Excel
  7. Обращение к рабочим листам
  8. Скрытие и отображение листов
  9. Описание задачи
  10. Как копировать и переименовать лист Excel макросом
  11. Перемещение/копирование листов в Excel
  12. Как сменить название листа
  13. Как изменить имя листа при помощи контекстного меню?
  14. Удаление листа в Excel

Требования к именам листов

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

1) длина введенного имени не должна превышать 31-го знака;

2) имя листа не должно содержать ни одного из следующих знаков: двоеточи” ( : ), косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );

3) имя не должно быть пустым.

Процесс переименования

Процедура переименования листов в Экселе в целом интуитивно понятна. Тем не менее, у некоторых пользователей, которые только начинают освоение программы, возникают определенные трудности.

Прежде, чем перейти непосредственно к описанию способов переименования, выясним, какие названия давать можно, а присвоение каких будет некорректным. Имя может быть присвоено на любом языке. При его написании можно использовать пробелы. Что же касается основных ограничений, то следует выделить следующие:

  • В наименовании не должны присутствовать такие символы: «?», «/», «», «:», «*», «[]»;
  • Название не может быть пустым;
  • Общая длина наименования не должна превышать 31 знак.

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

контекстное меню ярлыка

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

  1. Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».
  2. Как видим, после этого действия поле с названием ярлыка стало активным. Просто набираем туда с клавиатуры любое подходящее по контексту наименование.
  3. Жмем на клавишу Enter. После этого листу будет присвоено новое имя.

двойной щелчок по ярлыку

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

Как переименовать лист рабочей книги при помощи мыши?

Для переименования листа необходимо:

1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;

2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;

3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.

  1. Чтобы вставить новый рабочий лист, найдите и нажмите кнопку Новый лист.
  2. Откроется новый пустой лист.

Для того чтобы изменить количество листов, открываемых по умолчанию в новой книге Excel, перейдите к представлению Backstage, нажмите Параметры, затем выберите количество листов, которые необходимо включать в каждую новую книгу.

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

Рабочий лист (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 используется свойство 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, смотрите в этой статье.

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Описание задачи

Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.

C помощью нее переименовать все листы в книге можно следующим образом:

  1. Нужно подготовить два списка. Первый с перечнем наименований текущих листов. Второй – с новыми наименованиями листов. Проще всего сделать два столбца в первом старые наименования и рядом список, как нужно переименовать.
  2. Перейдите на вкладку VBA-Excel (она будет доступна после установки программы).
  3. В меню Диспетчеры найдите пункт Диспетчер листов.
  4. В диспетчере выберите команду Переименовать
  5. В диалоговом окне Переименовать листы из выделенного списка укажите диапазон со старыми наименованиями листов и аналогичный диапазон, содержащий новые названия, которые должны получиться в процессе переименования.

    При необходимости можно заполнить диапазон текущими названиями листов нажав кнопку Заполнить.
  6. Нажмите кнопку Переименовать.

Как копировать и переименовать лист Excel макросом

Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:

Руководитель этого отдела пожелал, чтобы названия листов планов работ для каждого сотрудника содержали их имена и фамилии.

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

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

Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):

В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:

SubPlanRabot()
DimdiapazAsRange
DimiAs Long
DimlistAsWorksheet
On Error Resume Next
Setdiapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo0
IfdiapazIs Nothing Then Exit Sub
Setlist = ActiveSheet
Fori = 1Todiapaz.Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
Next
End Sub

Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:

Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.

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

Перемещение/копирование листов в Excel

Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.

Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.

Эту же операцию можно выполнить в Excel с помощью команды контекстного меню листа Переместить/скопировать или команды Правка/Переместить/скопировать лист . Ими особенно удобно пользоваться, если вы хотите скопировать или переместить лист в другую книгу.

Перед копированием или перемещением листа в другую книгу необходимо открыть книгу-получатель. Кроме того, в случае копирования не забудьте установить флажок в поле Создать копию . В противном случае лист просто переместится в указанное вами место.

Задание для самостоятельной работы:

В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.

Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.

Как сменить название листа

При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.

Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.

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

НО!

1. Название листа может содержать максимум до 31 символа, причем пробелы допускаются.

2. В названии листа нельзя прописывать следующие символы:

* (звездочка).

: (двоеточие);

/ (косая черта);

[ ] (квадратные скобки);

(кавычка);

< > угловые скобки);

? (знак вопроса);

(обратная косая черта);

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

Как изменить имя листа при помощи контекстного меню?

Чтобы переименовать лист при помощи контекстного меню, нужно:

1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;

2) в контекстном меню выбрать пункт “Переименовать”;

3) набрать новое имя листа в соответствии с требованиями к именам листов;

4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.

Удаление листа в Excel

  1. Щелкните правой кнопкой мыши по ярлычку листа, который необходимо удалить, и из контекстного меню выберите пункт Удалить.
  2. Лист будет удален.

Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.

Если требуется ограничить изменения, которые разрешается вносить в текущий лист, Вы можете его защитить. Для этого щелкните правой кнопкой мыши по ярлычку листа и из контекстного меню выберите пункт Защитить лист.

Источники

  • http://macros-vba.ru/nadstrojki/excel/246-kak-pereimenovat-list-v-rabochej-knige-excel-pereimenovanie-listov
  • https://lumpics.ru/how-to-rename-worksheet-in-excel/
  • https://office-guru.ru/excel/pereimenovanie-vstavka-i-udalenie-lista-v-excel-24.html
  • https://vremya-ne-zhdet.ru/vba-excel/rabochiy-list-obrashcheniye-pereimenovaniye-skrytiye/
  • https://micro-solution.ru/projects/addin_vba-excel/sheets-rename
  • https://exceltable.com/vba-macros/makros-pereimenovat-listy
  • https://best-exam.ru/pereimenovanie-listov-v-excel/
  • https://zen.yandex.ru/media/topnews/urok-excel–32-kak-izmenit-nazvanie-i-cvet-iarlyka-rabochego-lista-5b2b7d5bcb0ffb00a9d43087

Понравилась статья? Поделить с друзьями:
  • Excel переименовать группу листов
  • Excel переименовать все листы макрос
  • Excel переименование листов рабочей книги
  • Excel перезапускается при сохранении
  • Excel передвинуть на ячеек