Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос определенной строки на другой лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос определенной строки на другой лист (Макросы/Sub)
Перенос определенной строки на другой лист
Skorpika Дата: Воскресенье, 23.11.2014, 20:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003 и 13
Добрый день!
Нужна помощь в доводке программы. Есть задача создать таблицу для контроля сроков по разным делам. Опыта работы с Экселем небольшой (на уровне сложить ячейки и т.п.), с VB и макросами - 4 дня, так что не судите строго. То, что получилось создать - во вложенном файле.
На листе "Текущие данные" - дела в работе, пока на них не будет дан ответ. Они сортируются по "ответственным", "дате до срока" и т.п.. Вобщем шеф ведёт по ним контроль и выдаёт пряники там кто опаздывает по срокам. По получении ответа - дело с текущего контроля отправляется в архив (вырезается с листа "текущий контроль" и вставляется на лист "Архив" при этом нижние строки занимают свободное место)

Что не получается - не могу грамотно реализовать перенос готовых данных. Текущих данных порядка 100-140, поэтому строк взято с запасом 150. "Кнопок переноса" соответственно 150, они сгруппированы, поэтому при постоянных сортировках не сбиваются. но у каждой свой макрос (свои данные переноса строк). На копировании и изменении сорокового макроса стало тоскливо и понятно что должно быть какое-то более простое и изящное решение. Как, может быть разгруппировав и привязав к ячейкам или как-то иначе, сделать на все эти кнопки один макрос или т.п. чтобы при нажатии на кнопку он сам определял в какой строке в текущий момент находится кнопка(в результате сортировок она может оказаться в любом месте 1-150), соответственно переносил в "Архив" ту текущую строку в которой она сейчас находится.
К сообщению приложен файл: __.1.6.xlsm (97.9 Kb)
 
Ответить
СообщениеДобрый день!
Нужна помощь в доводке программы. Есть задача создать таблицу для контроля сроков по разным делам. Опыта работы с Экселем небольшой (на уровне сложить ячейки и т.п.), с VB и макросами - 4 дня, так что не судите строго. То, что получилось создать - во вложенном файле.
На листе "Текущие данные" - дела в работе, пока на них не будет дан ответ. Они сортируются по "ответственным", "дате до срока" и т.п.. Вобщем шеф ведёт по ним контроль и выдаёт пряники там кто опаздывает по срокам. По получении ответа - дело с текущего контроля отправляется в архив (вырезается с листа "текущий контроль" и вставляется на лист "Архив" при этом нижние строки занимают свободное место)

Что не получается - не могу грамотно реализовать перенос готовых данных. Текущих данных порядка 100-140, поэтому строк взято с запасом 150. "Кнопок переноса" соответственно 150, они сгруппированы, поэтому при постоянных сортировках не сбиваются. но у каждой свой макрос (свои данные переноса строк). На копировании и изменении сорокового макроса стало тоскливо и понятно что должно быть какое-то более простое и изящное решение. Как, может быть разгруппировав и привязав к ячейкам или как-то иначе, сделать на все эти кнопки один макрос или т.п. чтобы при нажатии на кнопку он сам определял в какой строке в текущий момент находится кнопка(в результате сортировок она может оказаться в любом месте 1-150), соответственно переносил в "Архив" ту текущую строку в которой она сейчас находится.

Автор - Skorpika
Дата добавления - 23.11.2014 в 20:49
RAN Дата: Воскресенье, 23.11.2014, 21:21 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[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
[/vba]
К сообщению приложен файл: -1.6.xlsm (70.4 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[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
[/vba]

Автор - RAN
Дата добавления - 23.11.2014 в 21:21
Skorpika Дата: Воскресенье, 23.11.2014, 23:34 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003 и 13
Ran, Спасибо!
Красиво и просто.
Единственное, что она поднимает все строки (включая пустые строки с заначками формул) и через порядка 100 записей поднимутся строки без необходимых расчётов, но эту проблему думаю что решу даже с учётом моего опыта.
И почему то в упор не хочет считать оставшийся срок на доп контроль (столбцы I,J), хотя обычный (столбцы F,H) считает без проблем, хотя формулы и типы данных в соответствующих ячейках одинаковый... опять таки при ручном вводе в I - в J нормально считает, а через форму (доп контроль с чеком) не хочет.... пошел воевать..
Пишет что не понимает какой год (19** или 20**), тогда почему при заполнении через туже форму но в графе "дата регистрации" ему это до лампочки и спокойно считает (принимая на веру что год 20**) данные в столбцах FH, а в таких же данных в столбцах IJ уже начинает сомневаться... опять же почему нормально считает при ручном заполнении


Сообщение отредактировал Skorpika - Воскресенье, 23.11.2014, 23:56
 
Ответить
СообщениеRan, Спасибо!
Красиво и просто.
Единственное, что она поднимает все строки (включая пустые строки с заначками формул) и через порядка 100 записей поднимутся строки без необходимых расчётов, но эту проблему думаю что решу даже с учётом моего опыта.
И почему то в упор не хочет считать оставшийся срок на доп контроль (столбцы I,J), хотя обычный (столбцы F,H) считает без проблем, хотя формулы и типы данных в соответствующих ячейках одинаковый... опять таки при ручном вводе в I - в J нормально считает, а через форму (доп контроль с чеком) не хочет.... пошел воевать..
Пишет что не понимает какой год (19** или 20**), тогда почему при заполнении через туже форму но в графе "дата регистрации" ему это до лампочки и спокойно считает (принимая на веру что год 20**) данные в столбцах FH, а в таких же данных в столбцах IJ уже начинает сомневаться... опять же почему нормально считает при ручном заполнении

Автор - Skorpika
Дата добавления - 23.11.2014 в 23:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос определенной строки на другой лист (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!