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). Подскажите пожалуйста как решить данную проблему. Вот файл
Mershik, когда есть другие листы так происходит. Не могу файл с другими листами закинуть, он больше 100кб. Подскажите пожалуйста может быть есть другой более легкий вариант написания кода?
sokol92, Я прочитал, действительно, если событие поменять на activate, то не зависает. Но имя листа тогда будет меняться если выйти с листа и заново зайти. Подскажите пожалуйста, какое событие можно поставить, чтобы имя листа менялось при выборе просто другого месяца из списка?
Создали? Да ничего Вы не создали - это рабочий файл. А пример - это именно небольшой пример, и уж никак не 244К. Нужно было именно СОЗДАТЬ пример, где не будет ненужных ячеек и с данными, которые не относятся к задаче.
Юрий М, вот аналог, который работает. Но в том то и дело, что при событии calculate тот полностью отрубается. Но при этом надо чтобы название листа менялось сразу после выбора месяца в окне.
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. Никак нельзя сделать чтобы автоматически без данных операций менялось имя только при выборе из списка?
Если установить таким образом, то название будет формироваться только из названия месяца, но я его соединял с буквами "КС-3". В списке месяцев я не могу добавить эти буквы, потому что не только с этим документом будет таблица месяцев работать
У Вас пользователь меняет значение определенной ячейки (нескольких ячеек) и после этого нужно изменить имя листа. Обрабатывайте событие изменения именно этой ячейки (нескольких ячеек). Новое имя для листа Вы можете взять из любой другой ячейки или можете сконструировать непосредственно в макросе.