У меня был вопрос по данной таблице, пользователь Pelena очень сильно помогла в решении одного вопроса, но есть еще один не менее важный. Если кто знает, подскажите, пожалуйста. Подробнее описал ниже. На вкладке "Производственные затраты и ФР" после нажатия кнопки "Добавить позицию статьи затрат" происходит добавление строки, где в ячейке А1 необходимо выбрать из справочника нужную статью затрат. А можно ли, чтобы со строки А24 и внесенное значение в поле строки В24 автоматически сортировалось по коду в порядке возрастания, т.е. если в поле А1 выбрано значение П001, затем значение П038, и далее значение П005, в таблице со строки 24 и ниже статьи затрат (А) и их цифровые значения (В) распологались в порядке П001, П005, П038 и т.д. Заранее спасибо! P.S. Статьи затрат с кодом А000 - постоянные (они не изменяются), а с кодом П000 - переменные (могут в одном месяце быть, а могут и не быть). Вот они и нуждаются в сортировке в данной таблице.
У меня был вопрос по данной таблице, пользователь Pelena очень сильно помогла в решении одного вопроса, но есть еще один не менее важный. Если кто знает, подскажите, пожалуйста. Подробнее описал ниже. На вкладке "Производственные затраты и ФР" после нажатия кнопки "Добавить позицию статьи затрат" происходит добавление строки, где в ячейке А1 необходимо выбрать из справочника нужную статью затрат. А можно ли, чтобы со строки А24 и внесенное значение в поле строки В24 автоматически сортировалось по коду в порядке возрастания, т.е. если в поле А1 выбрано значение П001, затем значение П038, и далее значение П005, в таблице со строки 24 и ниже статьи затрат (А) и их цифровые значения (В) распологались в порядке П001, П005, П038 и т.д. Заранее спасибо! P.S. Статьи затрат с кодом А000 - постоянные (они не изменяются), а с кодом П000 - переменные (могут в одном месяце быть, а могут и не быть). Вот они и нуждаются в сортировке в данной таблице.Account196
Private Sub Worksheet_Change(ByVal Target As Range) r0_ = 24 n_ = Cells(Rows.Count, 1).End(3).Row - r0_ - 4 If Not Intersect(Target, Range("A" & r0_).Resize(n_)) Is Nothing Then With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With With Me.Sort .SortFields.Clear .SortFields.Add Key:=Range("A" & r0_) .SetRange Range("A" & r0_).Resize(n_, 2) .Apply End With With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End If End Sub
[/vba]
В модуль листа вот так можно [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) r0_ = 24 n_ = Cells(Rows.Count, 1).End(3).Row - r0_ - 4 If Not Intersect(Target, Range("A" & r0_).Resize(n_)) Is Nothing Then With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With With Me.Sort .SortFields.Clear .SortFields.Add Key:=Range("A" & r0_) .SetRange Range("A" & r0_).Resize(n_, 2) .Apply End With With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End If End Sub
Спасибо Вам большое за помощь. В макрос изменения внес, в модуль добавил, Работает, но... На главной форме предусмотрена кнопка [Очистка (обнуление) данных о реализации и себестоимости готовой продукции за предыдущий отчетный период, а также производственных затрат и ФР], после нажатия которой (в начале нового отчетного месяца) производится обнуление ранее введенных показателей в таблицах в целом (где это предусмотрено) и удаление статей переменных затрат, имеющих светло-зеленую заливку, в частности. После нажатия данной кнопки появляется окно с ошибкой: Run-time error '1004': Application-defined or object-definder error. В определенный месяц переменных затрат с кодом П000 может и не быть, а только постоянные (А000), но ошибка '1004' все равно появляется(( Возможно, что-то в коде мешает этому макросу выполнять команду по обнулению/удалению ранее введенных показателей. Благодарю
Спасибо Вам большое за помощь. В макрос изменения внес, в модуль добавил, Работает, но... На главной форме предусмотрена кнопка [Очистка (обнуление) данных о реализации и себестоимости готовой продукции за предыдущий отчетный период, а также производственных затрат и ФР], после нажатия которой (в начале нового отчетного месяца) производится обнуление ранее введенных показателей в таблицах в целом (где это предусмотрено) и удаление статей переменных затрат, имеющих светло-зеленую заливку, в частности. После нажатия данной кнопки появляется окно с ошибкой: Run-time error '1004': Application-defined or object-definder error. В определенный месяц переменных затрат с кодом П000 может и не быть, а только постоянные (А000), но ошибка '1004' все равно появляется(( Возможно, что-то в коде мешает этому макросу выполнять команду по обнулению/удалению ранее введенных показателей. БлагодарюAccount196
Сообщение отредактировал Account196 - Среда, 12.09.2018, 13:29
Видите у меня в макросе два блока With - End With? Добавьте их в свой макрос обнуления Должно получиться вот так [vba]
Код
Sub Обнуление_Щелчок() With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With Sheets("Реализация и себестоимость").Range("I8,J8").Value = " " Sheets("Производственные затраты и ФР").Range("B12:B23").Value = "0" Sheets("Реализация и себестоимость").Select For i = 1000 To 2 Step -1 If Cells(i, 1).Interior.ColorIndex = Cells(1, 1).Interior.ColorIndex Then Rows(i).Delete End If Next Sheets("Производственные затраты и ФР").Select For i = 1000 To 2 Step -1 If Cells(i, 1).Interior.ColorIndex = Cells(1, 1).Interior.ColorIndex Then Rows(i).Delete End If Next Sheets("Главная форма").Select With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End Sub
[/vba]
Видите у меня в макросе два блока With - End With? Добавьте их в свой макрос обнуления Должно получиться вот так [vba]
Код
Sub Обнуление_Щелчок() With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With Sheets("Реализация и себестоимость").Range("I8,J8").Value = " " Sheets("Производственные затраты и ФР").Range("B12:B23").Value = "0" Sheets("Реализация и себестоимость").Select For i = 1000 To 2 Step -1 If Cells(i, 1).Interior.ColorIndex = Cells(1, 1).Interior.ColorIndex Then Rows(i).Delete End If Next Sheets("Производственные затраты и ФР").Select For i = 1000 To 2 Step -1 If Cells(i, 1).Interior.ColorIndex = Cells(1, 1).Interior.ColorIndex Then Rows(i).Delete End If Next Sheets("Главная форма").Select With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End Sub
_Boroda_, Вы - гений! Спасибо!! Внес изменения в кнопку очистки. Вот что значит невнимательность (моя). Одно исправил, а на другое даже не посмотрел. А можно ли исправить эту ошибку, если переменных затрат в месяце нет, а только постоянные, то есть: переменных затрат с кодом П000 может и не быть, а только постоянные (А000), но ошибка '1004' все равно появляется, если не использовать статьи затрат с кодом П000. Если хоть одна добавлена в таблицу, то всё происходит ровно. Если нет, то выскакивает ошибка.
_Boroda_, Вы - гений! Спасибо!! Внес изменения в кнопку очистки. Вот что значит невнимательность (моя). Одно исправил, а на другое даже не посмотрел. А можно ли исправить эту ошибку, если переменных затрат в месяце нет, а только постоянные, то есть: переменных затрат с кодом П000 может и не быть, а только постоянные (А000), но ошибка '1004' все равно появляется, если не использовать статьи затрат с кодом П000. Если хоть одна добавлена в таблицу, то всё происходит ровно. Если нет, то выскакивает ошибка.Account196
Я думал, что строки до 24-й всегда неизменны. Если нет, то так [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) r0_ = 24 n_ = Cells(Rows.Count, 1).End(3).Row - r0_ - 4 If n_ < 1 Then Exit Sub If Not Intersect(Target, Range("A" & r0_).Resize(n_)) Is Nothing Then With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With With Me.Sort .SortFields.Clear .SortFields.Add Key:=Range("A" & r0_) .SetRange Range("A" & r0_).Resize(n_, 2) .Apply End With With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End If End Sub
[/vba]
Я думал, что строки до 24-й всегда неизменны. Если нет, то так [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) r0_ = 24 n_ = Cells(Rows.Count, 1).End(3).Row - r0_ - 4 If n_ < 1 Then Exit Sub If Not Intersect(Target, Range("A" & r0_).Resize(n_)) Is Nothing Then With Application .ScreenUpdating = 0 .Calculation = xlCalculationManual .EnableEvents = 0 End With With Me.Sort .SortFields.Clear .SortFields.Add Key:=Range("A" & r0_) .SetRange Range("A" & r0_).Resize(n_, 2) .Apply End With With Application .ScreenUpdating = 1 .Calculation = xlCalculationAutomatic .EnableEvents = 1 End With End If End Sub
Я думал, что строки до 24-й всегда неизменны. Если нет, то так
Да, эти строки в таблице (А000) всегда неизменны, а вот П000 - непостоянны. Изменения внес. Проверил, поиграл с таблицей всем и мыслимыми и немыслимыми образами Всё! Супер. Отлично! Благодарю Вас! Отличный форум, помогают профессионально.
Я думал, что строки до 24-й всегда неизменны. Если нет, то так
Да, эти строки в таблице (А000) всегда неизменны, а вот П000 - непостоянны. Изменения внес. Проверил, поиграл с таблицей всем и мыслимыми и немыслимыми образами Всё! Супер. Отлично! Благодарю Вас! Отличный форум, помогают профессионально. Account196