Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("J6:J26,N6:N26,R6:R26,V6:V26"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" If Target.Offset(0, -2) <> "" Then Range("A6:AI26").Sort Key1:=Range("AI6") End If Application.EnableEvents = True End Sub
[/vba]
Код макроса[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("J6:J26,N6:N26,R6:R26,V6:V26"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" If Target.Offset(0, -2) <> "" Then Range("A6:AI26").Sort Key1:=Range("AI6") End If Application.EnableEvents = True End Sub
AlexM, Спасибо огромное, всё работает. Но есть маленькая неувязочка в моём случае будет около 15 категорий, можно ли как то заставить макрос работать в разных категориях?
Кстати от Вас тоже был ответ по вставке текущего времени в ячейку по двойному нажатию.
Цитата
"Можно так Код вставить в модуль листа Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Target = Format(Time, "Long Time") End Sub"
Подскажите пожалуйста можно ли подправить макрос так, чтобы по двойному клику это работало только в некоторых столбцах. (I,K,M,O,Q,S,U,W) Спасибо!
AlexM, Спасибо огромное, всё работает. Но есть маленькая неувязочка в моём случае будет около 15 категорий, можно ли как то заставить макрос работать в разных категориях?
Кстати от Вас тоже был ответ по вставке текущего времени в ячейку по двойному нажатию.
Цитата
"Можно так Код вставить в модуль листа Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Target = Format(Time, "Long Time") End Sub"
Подскажите пожалуйста можно ли подправить макрос так, чтобы по двойному клику это работало только в некоторых столбцах. (I,K,M,O,Q,S,U,W) Спасибо!samykins
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("K6:K1000,O6:O1000,S6:S1000,W6:W1000"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" Set iKey1 = Range("AJ" & Cells(Target.Row, 9).End(xlUp).Row) 'по столбцу J определяем iKey1 и IRange Set IRange = Range("A" & Cells(Target.Row, 9).End(xlUp).Row & ":AJ" & Cells(Target.Row, 9).End(xlDown).Row) If Target.Offset(0, -2) <> "" Then IRange.Sort Key1:=iKey1 End If Application.EnableEvents = True End Sub
чтобы по двойному клику это работало только в некоторых столбцах. (I,K,M,O,Q,S,U,W)
Замените код[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Range("I6:I1000,K6:K1000,M6:M1000,O6:O1000,Q6:Q1000,S6:S1000,U6:U1000,W6:W1000"), Target) Is Nothing Then Target = Format(Time, "Long Time") End If End Sub
[/vba] Проверить не могу, так как в dfitv файле формулы не работают в Excel2003
Замените код на такой[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("K6:K1000,O6:O1000,S6:S1000,W6:W1000"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" Set iKey1 = Range("AJ" & Cells(Target.Row, 9).End(xlUp).Row) 'по столбцу J определяем iKey1 и IRange Set IRange = Range("A" & Cells(Target.Row, 9).End(xlUp).Row & ":AJ" & Cells(Target.Row, 9).End(xlDown).Row) If Target.Offset(0, -2) <> "" Then IRange.Sort Key1:=iKey1 End If Application.EnableEvents = True End Sub
чтобы по двойному клику это работало только в некоторых столбцах. (I,K,M,O,Q,S,U,W)
Замените код[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Range("I6:I1000,K6:K1000,M6:M1000,O6:O1000,Q6:Q1000,S6:S1000,U6:U1000,W6:W1000"), Target) Is Nothing Then Target = Format(Time, "Long Time") End If End Sub
[/vba] Проверить не могу, так как в dfitv файле формулы не работают в Excel2003AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Вторник, 13.05.2014, 12:53
Замените код на такойPrivate Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("K6:K1000,O6:O1000,S6:S1000,W6:W1000"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" Set iKey1 = Range("AJ" & Cells(Target.Row, 9).End(xlUp).Row) 'по столбцу J определяем iKey1 и IRange Set IRange = Range("A" & Cells(Target.Row, 9).End(xlUp).Row & ":AJ" & Cells(Target.Row, 9).End(xlDown).Row) If Target.Offset(0, -2) <> "" Then IRange.Sort Key1:=iKey1 End If Application.EnableEvents = True End Sub
Пишет Run time error 1004 Для этого требуется чтобы ячейки были одинакового размера. Видимо не нравятся объединённые ячейки для категорий групп. Но всё равно на сколько я понял это не совсем то. Нужно чтобы в каждой категории счет снова шел от 1 до ..... С временем всё работает спасибо!
Замените код на такойPrivate Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Intersect(Range("K6:K1000,O6:O1000,S6:S1000,W6:W1000"), Target) Is Nothing Then If Target.Offset(0, -2) = "" Then Target.Value = "" Set iKey1 = Range("AJ" & Cells(Target.Row, 9).End(xlUp).Row) 'по столбцу J определяем iKey1 и IRange Set IRange = Range("A" & Cells(Target.Row, 9).End(xlUp).Row & ":AJ" & Cells(Target.Row, 9).End(xlDown).Row) If Target.Offset(0, -2) <> "" Then IRange.Sort Key1:=iKey1 End If Application.EnableEvents = True End Sub
Пишет Run time error 1004 Для этого требуется чтобы ячейки были одинакового размера. Видимо не нравятся объединённые ячейки для категорий групп. Но всё равно на сколько я понял это не совсем то. Нужно чтобы в каждой категории счет снова шел от 1 до ..... С временем всё работает спасибо!samykins
Говорят, что коты помогают снять стресс. И ведь действительно, пнёшь засранца - и сразу легче!
Видно не все. Я вам файлы даю в формате Excel2003, а вы в Excel старших версий. У меня ваши формулы не работают. Приходится конвертировать каждый ваш файл и переделывать руками формулы в столбцах от Y до AI. Утомительно. В вашем файле есть скрытый пустой столбец Н, а в моем его нет., поэтому определение диапазонов групп у вас получается неверным.
Видно не все. Я вам файлы даю в формате Excel2003, а вы в Excel старших версий. У меня ваши формулы не работают. Приходится конвертировать каждый ваш файл и переделывать руками формулы в столбцах от Y до AI. Утомительно. В вашем файле есть скрытый пустой столбец Н, а в моем его нет., поэтому определение диапазонов групп у вас получается неверным.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
AlexM, Вот спасибо, вы практически мне открыли глаза. С столбцом H, стоило его удалить как всё заработало. Да и с диапазоном тоже подсказали. Подскажите пожалуйста тогда и такой момент. Если я включаю защиту на листа пытаясь скрыть формулы в ячейках то макрос перестает работать, этого можно избежать? Спасибо!
AlexM, Вот спасибо, вы практически мне открыли глаза. С столбцом H, стоило его удалить как всё заработало. Да и с диапазоном тоже подсказали. Подскажите пожалуйста тогда и такой момент. Если я включаю защиту на листа пытаясь скрыть формулы в ячейках то макрос перестает работать, этого можно избежать? Спасибо!samykins
Говорят, что коты помогают снять стресс. И ведь действительно, пнёшь засранца - и сразу легче!
Сообщение отредактировал samykins - Вторник, 13.05.2014, 17:14
Последний совет в этой теме. Сначала форматом ячеек устанавливаем защищать ячейку или нет. Защищаем лист, запрещая выделять защищенные ячейки. В начале кода снимаем защиту[vba]
Последний совет в этой теме. Сначала форматом ячеек устанавливаем защищать ячейку или нет. Защищаем лист, запрещая выделять защищенные ячейки. В начале кода снимаем защиту[vba]