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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2010, 12:14   #1
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию cut paste

Как можно програмно ( или с помощи макроса) выбранного строку удалить из 1-го листа, и эту строку добавить 2-й лист?
Aqil_f вне форума Ответить с цитированием
Старый 30.08.2010, 12:44   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вобщем случае, т.е. если допускается множественный выбор, допускается выделение как строки, так и ячеек в строке, а также допускаются несвязанные диапазоны, то так:
Код:
Dim r As Range: Application.ScreenUpdating = False
For Each r In Selection.Rows
    Rows(r.Row).Copy: Sheets(2).Rows(r.Row).Insert
Next: Selection.EntireRow.Delete
Если случай частный, то макрос можно упростить.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.08.2010, 13:02   #3
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Спасибо, SAS888. Все нормально работает. Но, как можно осуществить добовленние только после последного записа во 2-м листе?

SAS888, если можно отвечайте пожалуйста и в этом вопросе:

Эта команду хочу использувать в макросе: "ActiveSheet.ShowDataForm".

1. Форма открывается, но на форме видно все время данные из 1-го строка. Как можно делать так что на форме видно была данные от выбранного строка в листе?

2. Если сделать общий доступ, кнопка "Добавить" будет не активен. Можно ли решить этот вопрос?
Вложения
Тип файла: rar zz.rar (6.4 Кб, 10 просмотров)
Aqil_f вне форума Ответить с цитированием
Старый 31.08.2010, 06:15   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
как можно осуществить добовленние только после последного записа во 2-м листе?
Все зависит от того, что считать последней записью на 2-м листе. Так, например, если требуется переместить выделенные на 1-м листе строки (также, можно выделять не строки целиком, а по 1-й ячейке в требуемой строке) на 2-й лист, после последней заполненной ячейки в столбце "A", то можно так:
Код:
Selection.EntireRow.Copy Sheets(2).Rows(Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1)
Selection.EntireRow.Delete
Т.к. не требуется запоминать номер перемещаемой строки, то можно обойтись без цикла и дополнительной переменной. Если последняя запись на 2-м листе определяется другими критериями - поясните, как мы должны ее идентифицировать.

Цитата:
...если можно отвечайте пожалуйста и в этом вопросе
Вопрос простой. Но ответ будет понятен, если я приведу пример файла. Извините, но у меня нет ни малейшего желания создавать форму самостоятельно, и нет времени взламывать Ваш проект.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 31.08.2010, 08:43   #5
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Код:
Selection.EntireRow.Copy Sheets(2).Rows(Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1)
Selection.EntireRow.Delete
Спасибо, мне это нужно была.
Aqil_f вне форума Ответить с цитированием
Старый 01.09.2010, 08:56   #6
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Код:
Selection.EntireRow.Copy Sheets(2).Rows(Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1)
Selection.EntireRow.Delete
Selection.EntireRow- я так понимаю что это выделенная строка. Это так ли? А если надо будет копировать не выделенный, а следуюший (после выделенный) тогда как нужно будет менять этот код? Я никак не могу.
Aqil_f вне форума Ответить с цитированием
Старый 01.09.2010, 09:14   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Selection.EntireRow - Это диапазон строк, в который входят все выделенные ячейки. Так, например, если выделить ячейки "A1:C3" и "F8", то Selection.EntireRow будет содержать все ячейки в строках 1,2,3 и 8.
Цитата:
А если надо будет копировать не выделенный, а следуюший (после выделенный) тогда как нужно будет менять этот код? Я никак не могу.
Да, код будет другой. Объясните, что Вам нужно. Если, например, пользователь выделил диапазон, содержащий несколько ячеек и строк (при чем, не обязательно связанных), то что нужно?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.09.2010, 09:17   #8
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию

как ходить по ячейкам было здесь
http://www.programmersforum.ru/showthread.php?t=111241
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
alebed вне форума Ответить с цитированием
Старый 01.09.2010, 09:29   #9
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Да, код будет другой. Объясните, что Вам нужно. Если, например, пользователь выделил диапазон, содержащий несколько ячеек и строк (при чем, не обязательно связанных), то что нужно?
На моем примере выделяется только вся строка.
А не так как отдельные ячейки "A1:C3" и "F8" и т.д.,
Иногда приходится не выделенную, а следюшие строку копировать.
Aqil_f вне форума Ответить с цитированием
Старый 01.09.2010, 10:06   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если выделить одну строку (!), то переместить следующую, после выделенной, строку на 2-й лист после последней записи в столбце "A" можно так:
Код:
Selection.Offset(1).Copy Sheets(2).Rows(Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1)
Selection.Offset(1).Delete
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Selection.Paste agregator Microsoft Office Excel 2 17.11.2009 06:06
copy-paste. Оптимизация! mephist Microsoft Office Excel 3 15.07.2009 05:02
Контекстное Меню, проблема с cut/copy shershen Win Api 2 14.05.2009 03:18
Облом Copy&Paste SHEI'TI Microsoft Office Word 2 24.09.2007 14:16