Страницы: 1
RSS
Проверка вводимых значениях на вновь создаваемых листах
 
Всех приветствую. Искал по сайту, не нашёл, решил задать вопрос. Как можно проверять вводимые значения на вновь создаваемых листах книги?
На листе в ячейке пишется текстовая строчка длинной примерно в 50 символов. Создаётся новый лист в этой же ячейке на новом листе пишется это жа текстовая строчка и т.д. В этих строчках меняется несколько символов (пусть это будет номер №2020\52412в, - формат номера не всегда один и тот же) .Нужно проверять этот номер на разных листах, чтобы не было повтора. Это в идеале. Но можно проверять на всех листах ячейку (например A1) на повтор вводимого значения. В этой ячейке будет только проверяемое значение, без лишних посторонних символов. Условным форматированием не получится, так как листы постоянно создаются. Условное форматирование не подходит. Копировать условное форматирование это не рациональное повторяемое действие =). Я так понимаю надо уповать на макрос.
 
Код
Sub fff()
    For Each iSh In Worksheets
        If iSh.Name <> "Лист1" Then ' имя основного листа можно поменять здесь
            If iSh.[A1].Value = Sheets("Лист1").[A1].Value Then ' и здесь
                MsgBox "Повтор на листе '" & iSh.Name & "'!"
                Exit Sub
            End If
        End If
    Next
End Sub
Учимся сами и помогаем другим...
 
Автоматом не выходит. Можно конечно сделать проверку при открытии книги, можно запускать макрос, но в момент нажатия "Enter" после  ввода проверять было бы удобнее многократнее.
Да, и тут проверка по отношению к основному листу. На других листах =( значения могут повторяться.
Можно ли ещё дополнить макрос так, чтобы подсветка ячейки, например, красным была при одинаковых значениях? (но это если на написанию кода много времени не займёт).
Изменено: Dik - 07.04.2016 09:52:26
 
а мой макрос на автоматизм не претендует. его надо запустить руками. Я Вам помог с основой, а дальше Вы уж сами
Учимся сами и помогаем другим...
 
Поэтому и обращаюсь, что в макросах очень слабо рублю. Но всё-равное благодарю.
 
Цитата
Dik написал: Автоматом не выходит
Посмотрите в сторону события Workbook_SheetChange
 
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$A$1" Then
        For Each iSh In Worksheets
            If iSh.Name <> Sh.Name Then
                If iSh.[A1].Value = Target.Value And Target <> "" Then
                    MsgBox "Повтор на листе '" & iSh.Name & "'!"
                    Application.Undo
                    Exit Sub
                End If
            End If
        Next
    End If
End Sub
Изменено: ber$erk - 07.04.2016 11:22:54 (добавил проверку, что ячейка не пустая)
Учимся сами и помогаем другим...
Страницы: 1
Читают тему
Наверх