Здравствуйте! В ячейке ввожу символы, нажимаю на кнопку - создается лист с таким именем. возможно ли запустить проверку в книге по названию листов? Задача: если лист с названием таким, как значение в ячейке есть, то открывается тот лист, если нет, то создается новый. Заранее спасибо!
Здравствуйте! В ячейке ввожу символы, нажимаю на кнопку - создается лист с таким именем. возможно ли запустить проверку в книге по названию листов? Задача: если лист с названием таким, как значение в ячейке есть, то открывается тот лист, если нет, то создается новый. Заранее спасибо!DreOne
Вот как-то так можно, например. В модуле листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub On Error Resume Next Sheets(Target.Value).Select If Err Then Application.ScreenUpdating = 0 Sheets.Add.Name = Target Me.Select End If End Sub
[/vba]
Вот как-то так можно, например. В модуле листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub On Error Resume Next Sheets(Target.Value).Select If Err Then Application.ScreenUpdating = 0 Sheets.Add.Name = Target Me.Select End If End Sub
Получается, что он постоянно проверяет эту ячейку? Если Вам не сложно, можно в кратце про строки? [moder]Не нужно цитировать посты целиком - это нарушение Правил форума. Удалила лишнее.[/moder]
Получается, что он постоянно проверяет эту ячейку? Если Вам не сложно, можно в кратце про строки? [moder]Не нужно цитировать посты целиком - это нарушение Правил форума. Удалила лишнее.[/moder]DreOne
Саморазвитие - это всё...
Сообщение отредактировал Manyasha - Пятница, 15.01.2016, 17:57
Получается, что он постоянно проверяет эту ячейку?
Ну, не постоянно, а [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)'при любом изменении на листе If Target.Address(0, 0) <> "A1" Then Exit Sub'смотрит - если менялась ячейка А1 и только она одна, то идем дальше, иначе выход из макроса On Error Resume Next'если будет ошибка, то продолжаем работу макроса Sheets(Target.Value).Select'активировать лист с именем из ячейки А1, если такого листа нет, то будет ошибка If Err Then'условие если ошибка, то Application.ScreenUpdating = 0'отключаем обновление экрана Sheets.Add.Name = Target'вставляем новый лист и называем его по значению в А1 Me.Select'снова активируем тот лист, в котором макрос и в котором мы до этого работали End If'окончание условия End Sub'окончание макроса
Получается, что он постоянно проверяет эту ячейку?
Ну, не постоянно, а [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)'при любом изменении на листе If Target.Address(0, 0) <> "A1" Then Exit Sub'смотрит - если менялась ячейка А1 и только она одна, то идем дальше, иначе выход из макроса On Error Resume Next'если будет ошибка, то продолжаем работу макроса Sheets(Target.Value).Select'активировать лист с именем из ячейки А1, если такого листа нет, то будет ошибка If Err Then'условие если ошибка, то Application.ScreenUpdating = 0'отключаем обновление экрана Sheets.Add.Name = Target'вставляем новый лист и называем его по значению в А1 Me.Select'снова активируем тот лист, в котором макрос и в котором мы до этого работали End If'окончание условия End Sub'окончание макроса