Страницы: 1
RSS
Ошибка в макросе, изменяющем имя листа на указанное в ячейке
 
Добрый день! Есть такой макрос
Код
Private Sub Worksheet_Calculate()
  If Range("BB2").Value <> "" Then
       Me.Name = Range("BB2").Value
    End If
End Sub
Он меняет названия листа в в соответствии с изменяющейся ячейкой BB2, которая меняется через окно списка. Когда в книги есть и другие листы несколько раз изменив выбор месяца через окно списка Excel дико зависает, выдает ошибку out of stack space (error 28). Подскажите пожалуйста как решить данную проблему. Вот файл

пример см. ниже
Изменено: gmb - 07.05.2020 13:51:41
 
gmb, gmb, у меня все работает....
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, когда есть другие листы так происходит. Не могу файл с другими листами закинуть, он больше 100кб. Подскажите пожалуйста может быть есть другой более легкий вариант написания кода?
Изменено: gmb - 07.05.2020 12:50:52
 
У Вас макрос обрабытывает не то событие. Прочитайте про обработку события изменения ячеек листа.
Изменено: sokol92 - 07.05.2020 14:14:16
Владимир
 
Цитата
gmb написал:
Не могу файл с другими листами закинуть, он больше 100кб.
Почитайте правила - уже давно ограничение в 300.
По поводу файла: а СОЗДАТЬ небольшой аналог тоже не можете?
 
Юрий М, Спасибо, создал аналог, загрузил
 
Не знаю, насколько это аналог, но поломан он не хило.
 
sokol92, Я прочитал, действительно, если событие поменять на activate, то не зависает. Но имя листа тогда будет меняться если выйти с листа и заново зайти. Подскажите пожалуйста, какое событие можно поставить, чтобы имя листа менялось при выборе просто другого месяца из списка?
 
Цитата
gmb написал:
создал аналог, загрузил
Создали? Да ничего Вы не создали - это рабочий файл. А пример - это именно небольшой пример, и уж никак не 244К. Нужно было именно СОЗДАТЬ пример, где не будет ненужных ячеек и с данными, которые не относятся к задаче.
 
Юрий М, вот аналог, который работает. Но в том то и дело, что при событии calculate тот полностью отрубается. Но при этом надо чтобы название листа менялось сразу после выбора месяца в окне.  
Изменено: gmb - 07.05.2020 13:37:11
 
Цитата
gmb написал:
какое событие можно поставить
Добавил ссылку в # 4. Можно так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Application.Intersect(Range("BB2"), Target) Is Nothing Then
     If Range("BB2").Value <> "" And Range("BB2").Value <> Me.Name Then
       Me.Name = Range("BB2").Value
     End If
   End If
End Sub
Владимир
 
sokol92, Этот вариант работает только если нажать на ячейку bb2 и нажать enter. Никак нельзя сделать чтобы автоматически без данных операций менялось имя только при выборе из списка?
 
Если у Вас для ячейки BB2 установлена проверка данных по списку, то и имя листа будет меняться соответственно выбранному из списка значению.
Владимир
 
Если установить таким образом, то название будет формироваться только из названия месяца, но я его соединял с буквами "КС-3". В списке месяцев я не могу добавить эти буквы, потому что не только с этим документом будет таблица месяцев работать
 
У Вас пользователь меняет значение определенной ячейки (нескольких ячеек) и после этого нужно изменить имя листа. Обрабатывайте событие изменения именно этой ячейки (нескольких ячеек). Новое имя для листа Вы можете взять из любой другой ячейки или можете сконструировать непосредственно в макросе.
Владимир
 
Цитата
gmb написал:
но я его соединял с буквами "КС-3"
Так кто же Вам мешает добавить к имени эти "буквы№?
 
Господа, вы серьёзно полагаете, что от такого файла можно ожидать нормальной работы?
Страницы: 1
Наверх