Здравствуйте, дамы и господа! Вопрос: как сделать так, чтобы условия, заданные в ячейке A2 "У мной таблицы" на Листе 1, распространялись на ячейки ниже(т.е. A3, A4 и т.д.)? Понимаю, что нужно как-то по-другому задать адрес диапазона в макросе, но не соображу как. Пример прилагаю.
Здравствуйте, дамы и господа! Вопрос: как сделать так, чтобы условия, заданные в ячейке A2 "У мной таблицы" на Листе 1, распространялись на ячейки ниже(т.е. A3, A4 и т.д.)? Понимаю, что нужно как-то по-другому задать адрес диапазона в макросе, но не соображу как. Пример прилагаю.Xpert
Четвертую строчку замените на проверку номера столбца. Ну и добавил строку, чтобы шапку не трогало. И формулу с именованном диапазоне поменял, СЧЁТЗ побыстрее будет [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Row < 2 Then Exit Sub If Target.Column = 1 Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Лист2").Range("NaMs"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Sheets("Лист2").Range("NaMs").Cells(Sheets("Лист2").Range("NaMs").Rows.Count + 1, 1) = Target End If End If End If Sheets("Лист2").Range("NaMs").Sort Key1:=Sheets("Лист2").Range("NaMs"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End Sub
[/vba]
Четвертую строчку замените на проверку номера столбца. Ну и добавил строку, чтобы шапку не трогало. И формулу с именованном диапазоне поменял, СЧЁТЗ побыстрее будет [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Row < 2 Then Exit Sub If Target.Column = 1 Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Лист2").Range("NaMs"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Sheets("Лист2").Range("NaMs").Cells(Sheets("Лист2").Range("NaMs").Rows.Count + 1, 1) = Target End If End If End If Sheets("Лист2").Range("NaMs").Sort Key1:=Sheets("Лист2").Range("NaMs"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End Sub