Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2014, 21:10   #1
Skorpika
 
Регистрация: 23.11.2014
Сообщений: 4
По умолчанию Перенос определенной строки на другой лист

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

Что не получается - не могу грамотно реализовать перенос готовых данных. Текущих данных порядка 100-140, поэтому строк взято с запасом 150. "Кнопок переноса" соответственно 150, они сгруппированы, поэтому при постоянных сортировках не сбиваются. но у каждой свой макрос (свои данные переноса строк). На копировании и изменении сорокового макроса стало тоскливо и понятно что должно быть какое-то более простое и изящное решение. Как, может быть разгруппировав и привязав к ячейкам или как-то иначе, сделать на все эти кнопки один макрос или т.п. чтобы при нажатии на кнопку он сам определял в какой строке в текущий момент находится кнопка(в результате сортировок она может оказаться в любом месте 1-150), соответственно переносил в "Архив" ту текущую строку в которой она сейчас находится.
Вложения
Тип файла: zip Kartochki16.zip (77.5 Кб, 38 просмотров)
Skorpika вне форума Ответить с цитированием
Старый 23.11.2014, 22:22   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Лучше иметь одну кнопку, а переносить данные из строки с активной ячейкой
Выделил любую ячейку в нужной строке и нажал кнопку
Код:
Private Sub В_архив_Click()
      Перенос_в_архив Selection.Row
End Sub
Ну и процедура переноса как-то так
Код:
Sub Перенос_в_архив(R)
    Range(Cells(R, 2), Cells(R, 8)).Select
    Value = MsgBox("Перенести в архив текущую запись?", vbOKCancel, "Потрверждение пререноса в архив")
    If Value = 1 Then
        Range(Cells(R, 2), Cells(R, 7)).Copy Sheets("Архив").[B2:B2000].SpecialCells(xlCellTypeBlanks).Cells(1, 1)
        Range(Cells(R, 2), Cells(R, 7)).Delete Shift:=xlUp
    End If
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 23.11.2014, 22:34   #3
Skorpika
 
Регистрация: 23.11.2014
Сообщений: 4
По умолчанию

Алекс, Спс за решение, сейчас буду тестировать, но вот беда, я то это сам понимаю (про наличии активной ячейки в нужной строке), сам бы просто вырезал и вставлял посредствам КонтрЦ-КонтрлВ, но в канцелярии сидят люди которые Мышку то в первый раз видят, а уж просить "просто нажимать на любую ячейку в нужной строке" перед переносом - для них за гранью фантастики...
Правильно ли я понимаю, что никакая функция (или т.п.) не меняет своих данных при нажатии кнопки (принимая определенные данные или адрес ячейки в которой данная кнопка расположена)?

Но в любом случае 1 макрос лучше 150.... спс, пошёл тестить

Последний раз редактировалось Skorpika; 23.11.2014 в 22:43.
Skorpika вне форума Ответить с цитированием
Старый 23.11.2014, 22:41   #4
Skorpika
 
Регистрация: 23.11.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Value = MsgBox("Перенести в архив текущую запись?", vbOKCancel, "Потрверждение пререноса в архив")
Еще вопросик, можно ли в лэйбл внести переменную?
не просто "Перенести в архив текущую запись?", а "Перенести запись 111ж Иванов И.И. от 17,11,14 в архив?", где 111ж Иванов И.И. от 17,11,14 будут данными из переносимой строики.
Skorpika вне форума Ответить с цитированием
Старый 23.11.2014, 23:12   #5
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

Тупо переделал Ваш макрос как смог. Тыкните мышем в столбец L. Перезагрузил файл.
Вложения
Тип файла: rar Skorpika.rar (169.6 Кб, 83 просмотров)

Последний раз редактировалось gling; 23.11.2014 в 23:22.
gling вне форума Ответить с цитированием
Старый 23.11.2014, 23:12   #6
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Код:
 Value = MsgBox("Перенести в архив " & Cells(R, 2) & " от " & Cells(R, 3) & "?", vbOKCancel, "Потрверждение пререноса в архив")
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 24.11.2014, 00:28   #7
Skorpika
 
Регистрация: 23.11.2014
Сообщений: 4
По умолчанию

Alex, gling, Спасибо.
Skorpika вне форума Ответить с цитированием
Старый 16.12.2020, 14:33   #8
dkorsachev
Новичок
Джуниор
 
Регистрация: 16.12.2020
Сообщений: 2
По умолчанию

Здравствуйте, кто может поможет написать макрос переноса определённых строк в новую книгу! Нужно отфильтровать строки по "названию" и эти строки вкинуть в новую книгу. Но изначальный документ объёмный около 150000 строк. Как можно реализовать макрос в таком случае?

Нашёл что то похожее но не совсем:

Sub Название_Макроса()

'Выделить диапазон который необходимо скопировать
Range("A1:F52").Select - вот здесь нужно отфильтровать строки по названию в одном из столбцов

'Скопировать то, что выделено
Selection.Copy

ChDir "путь к папке где лежит файл в который необходимо скопировать" - можно просто сохранить в новую книгу по пусти C:\Temp

Workbooks.Open Filename:= "Название файла, который находится в папке, путь к которой указан выше"

'Выделить начальную ячейку в которую необходимо вставить скопированные данные
Range("A1").Select

'Вставить данные
ActiveSheet.Paste

'сохранить текущую книгу
ActiveWorkbook.Save

'Закрыть книгу
ActiveWorkbook.Close End Sub

Последний раз редактировалось dkorsachev; 16.12.2020 в 14:41.
dkorsachev вне форума Ответить с цитированием
Старый 16.12.2020, 15:08   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

- Запустить макрорекордер,
- произвести действия
Цитата:
отфильтровать строки по названию в одном из столбцов
- получить готовый код, который нуждается в минимальной коррекции



Кнопки "новая тема" не нашел?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.12.2020, 15:26   #10
dkorsachev
Новичок
Джуниор
 
Регистрация: 16.12.2020
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
- Запустить макрорекордер,
- произвести действия
- получить готовый код, который нуждается в минимальной коррекции



Кнопки "новая тема" не нашел?
А зачем плодить кучу тем если эта похожа на мою. В документе слишком много строк и макрорекордером не получается отфильтровать такое количество строк, тем более в столбце в котором фильтрую в ячейках не два слова написано, выдаёт ошибку уже на 190 строк too many line continuations
dkorsachev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос строки на другой лист по условию TimoXEi Microsoft Office Excel 12 24.01.2013 16:21
перенос данных на другой лист vorimid Microsoft Office Excel 11 03.06.2012 19:23
Перенос строки в другой лист _Fish_ Microsoft Office Excel 5 29.02.2012 10:52
Выборка данных, перенос строки на другой лист) Viten2 Microsoft Office Excel 1 03.05.2011 16:14
перенос данных на другой лист Jonny B Microsoft Office Excel 15 26.04.2011 09:16