Добрый день! Нужна помощь в доводке программы. Есть задача создать таблицу для контроля сроков по разным делам. Опыта работы с Экселем небольшой (на уровне сложить ячейки и т.п.), с VB и макросами - 4 дня, так что не судите строго. То, что получилось создать - во вложенном файле. На листе "Текущие данные" - дела в работе, пока на них не будет дан ответ. Они сортируются по "ответственным", "дате до срока" и т.п.. Вобщем шеф ведёт по ним контроль и выдаёт пряники там кто опаздывает по срокам. По получении ответа - дело с текущего контроля отправляется в архив (вырезается с листа "текущий контроль" и вставляется на лист "Архив" при этом нижние строки занимают свободное место)
Что не получается - не могу грамотно реализовать перенос готовых данных. Текущих данных порядка 100-140, поэтому строк взято с запасом 150. "Кнопок переноса" соответственно 150, они сгруппированы, поэтому при постоянных сортировках не сбиваются. но у каждой свой макрос (свои данные переноса строк). На копировании и изменении сорокового макроса стало тоскливо и понятно что должно быть какое-то более простое и изящное решение. Как, может быть разгруппировав и привязав к ячейкам или как-то иначе, сделать на все эти кнопки один макрос или т.п. чтобы при нажатии на кнопку он сам определял в какой строке в текущий момент находится кнопка(в результате сортировок она может оказаться в любом месте 1-150), соответственно переносил в "Архив" ту текущую строку в которой она сейчас находится.
Добрый день! Нужна помощь в доводке программы. Есть задача создать таблицу для контроля сроков по разным делам. Опыта работы с Экселем небольшой (на уровне сложить ячейки и т.п.), с VB и макросами - 4 дня, так что не судите строго. То, что получилось создать - во вложенном файле. На листе "Текущие данные" - дела в работе, пока на них не будет дан ответ. Они сортируются по "ответственным", "дате до срока" и т.п.. Вобщем шеф ведёт по ним контроль и выдаёт пряники там кто опаздывает по срокам. По получении ответа - дело с текущего контроля отправляется в архив (вырезается с листа "текущий контроль" и вставляется на лист "Архив" при этом нижние строки занимают свободное место)
Что не получается - не могу грамотно реализовать перенос готовых данных. Текущих данных порядка 100-140, поэтому строк взято с запасом 150. "Кнопок переноса" соответственно 150, они сгруппированы, поэтому при постоянных сортировках не сбиваются. но у каждой свой макрос (свои данные переноса строк). На копировании и изменении сорокового макроса стало тоскливо и понятно что должно быть какое-то более простое и изящное решение. Как, может быть разгруппировав и привязав к ячейкам или как-то иначе, сделать на все эти кнопки один макрос или т.п. чтобы при нажатии на кнопку он сам определял в какой строке в текущий момент находится кнопка(в результате сортировок она может оказаться в любом месте 1-150), соответственно переносил в "Архив" ту текущую строку в которой она сейчас находится.Skorpika
Sub Мяу() Dim r&, rr& r = Selection(1).Row If MsgBox("Перенести в архив запись № " & Cells(r, 1).Value & " ?", vbOKCancel, "Потрверждение пререноса в архив") = vbOK Then rr = Sheets("Архив").Cells(Rows.Count, "B").End(xlUp).Row + 1 Range("B" & r & ":G" & r).Copy Sheets("Архив").Range("B" & rr) Range("K" & r).Copy Sheets("Архив").Range("H" & rr) Range("B" & r & ":K" & r).Delete Shift:=xlUp End If End Sub
[/vba]
[vba]
Код
Sub Мяу() Dim r&, rr& r = Selection(1).Row If MsgBox("Перенести в архив запись № " & Cells(r, 1).Value & " ?", vbOKCancel, "Потрверждение пререноса в архив") = vbOK Then rr = Sheets("Архив").Cells(Rows.Count, "B").End(xlUp).Row + 1 Range("B" & r & ":G" & r).Copy Sheets("Архив").Range("B" & rr) Range("K" & r).Copy Sheets("Архив").Range("H" & rr) Range("B" & r & ":K" & r).Delete Shift:=xlUp End If End Sub
Ran, Спасибо! Красиво и просто. Единственное, что она поднимает все строки (включая пустые строки с заначками формул) и через порядка 100 записей поднимутся строки без необходимых расчётов, но эту проблему думаю что решу даже с учётом моего опыта. И почему то в упор не хочет считать оставшийся срок на доп контроль (столбцы I,J), хотя обычный (столбцы F,H) считает без проблем, хотя формулы и типы данных в соответствующих ячейках одинаковый... опять таки при ручном вводе в I - в J нормально считает, а через форму (доп контроль с чеком) не хочет.... пошел воевать.. Пишет что не понимает какой год (19** или 20**), тогда почему при заполнении через туже форму но в графе "дата регистрации" ему это до лампочки и спокойно считает (принимая на веру что год 20**) данные в столбцах FH, а в таких же данных в столбцах IJ уже начинает сомневаться... опять же почему нормально считает при ручном заполнении
Ran, Спасибо! Красиво и просто. Единственное, что она поднимает все строки (включая пустые строки с заначками формул) и через порядка 100 записей поднимутся строки без необходимых расчётов, но эту проблему думаю что решу даже с учётом моего опыта. И почему то в упор не хочет считать оставшийся срок на доп контроль (столбцы I,J), хотя обычный (столбцы F,H) считает без проблем, хотя формулы и типы данных в соответствующих ячейках одинаковый... опять таки при ручном вводе в I - в J нормально считает, а через форму (доп контроль с чеком) не хочет.... пошел воевать.. Пишет что не понимает какой год (19** или 20**), тогда почему при заполнении через туже форму но в графе "дата регистрации" ему это до лампочки и спокойно считает (принимая на веру что год 20**) данные в столбцах FH, а в таких же данных в столбцах IJ уже начинает сомневаться... опять же почему нормально считает при ручном заполненииSkorpika
Сообщение отредактировал Skorpika - Воскресенье, 23.11.2014, 23:56