Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Добавление новой строки / 15 сообщений из 15, страница 1 из 1
05.03.2011, 09:25
    #37150329
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Добрый день, уважаемые.

Ситуация следующая:
Существует книга Excel2003, c двумя листами, после выделения строки (произвольной) на первом листе,
мне надо её удалить из первого листа и вставить во второй лист, но в качестве новой строки, не трогая
данных которые там уже есть.

Пробовал сам записать макрос, но он у меня не добавляет новую строку, а заменяет старую.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Selection.Copy
Application.CutCopyMode = False
Selection.Cut
Sheets("Лист2").Select
ActiveSheet.Paste
Sheets("Лист1").Select
Selection.Delete Shift:=xlUp

Подскажите, как можно реализовать?
Буду очень благодарен, в любом случае, ну а если с примером, сильнее.
...
Рейтинг: 0 / 0
05.03.2011, 10:02
    #37150419
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Выбираете любую ячейку в строке, и...
Код: plaintext
1.
    ActiveCell.EntireRow.Copy (Sheets("Лист2").UsedRange.End(xlDown).Offset( 1 ,  0 ))
    ActiveCell.EntireRow.Delete (xlUp)
...
Рейтинг: 0 / 0
05.03.2011, 10:34
    #37150492
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
AndreTM, спасибо большое, все отлично.
Заказывай поощрение (в пределах разумного)
...
Рейтинг: 0 / 0
05.03.2011, 10:49
    #37150525
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
?AndreTM, спасибо большое, все отлично.
Заказывай поощрение (в пределах разумного)

Извиняюсь, поторопился.
Что-то не корректно работает.
С листа1 удалет всегда, а на лист2 вставлет нормально,
но иногда проскакивает вставка не новой записи а вместо существующей.
...
Рейтинг: 0 / 0
05.03.2011, 12:14
    #37150675
_slan_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
?, я бы чуть усложнил на случай , если на листе 2 менее 2х записей(одна или ниодной)

Sub ddd()
On Error GoTo er
ActiveCell.EntireRow.Copy (Sheets("Лист2").UsedRange.End(xlDown).Offset(1))
ActiveCell.EntireRow.Delete (xlUp)
Exit Sub
er: ActiveCell.EntireRow.Copy (Sheets("Лист2").UsedRange.Offset(1))
End Sub


ну а почему иногда заменяет - надо смотреть на ваши записи..

скорее всего первая ячейка в какой то строке пустая, вот оно и принимает ее за конец записей
...
Рейтинг: 0 / 0
05.03.2011, 12:23
    #37150691
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
_slan_, спасибо большое, Вы были правы, действительно была проблема из-за пустых ячеек в начале строки.

?AndreTM, спасибо большое, все отлично.
Заказывай поощрение (в пределах разумного)
Предложение снова в силе.

_slan_ и AndreTM, спасибо еще раз.

Вопрос снят окончаиельно, проблема решена.
...
Рейтинг: 0 / 0
09.03.2011, 16:09
    #37155850
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Еще раз добрый день, уважаемые!
Снова к Вам за помощью.
Мне требуется реализовать приблизительно тоже самое, что и было описано выше, но

Курсор находится в определенной строке, после нажатия кнопки, надо скопировать эту строку, на другой лист, в конец диапазона строк и на этот же лист в конец диапазона строк, при этом удалить строку, в которой находился курсор и переместить курсор на последнюю строку этого же листа, т.е. на вновь скопированную строку.

Заранее спасибо.
...
Рейтинг: 0 / 0
09.03.2011, 16:43
    #37155942
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Замените в коде Copy на Cut
...
Рейтинг: 0 / 0
09.03.2011, 16:48
    #37155950
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Что-то я не совсем суть уловил, но наверное так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ddd()
with ActiveCell.EntireRow
.Copy (ActiveSheet.UsedRange.End(xlDown).Offset( 1 ))
.Copy (Sheets("Лист2").UsedRange.End(xlDown).Offset( 1 ))
.Delete (xlUp)
End with
ActiveSheet.UsedRange.End(xlDown).Select
End Sub
...
Рейтинг: 0 / 0
09.03.2011, 17:14
    #37156003
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
The_PristЧто-то я не совсем суть уловил, но наверное так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ddd()
with ActiveCell.EntireRow
.Copy (ActiveSheet.UsedRange.End(xlDown).Offset( 1 ))
.Copy (Sheets("Лист2").UsedRange.End(xlDown).Offset( 1 ))
.Delete (xlUp)
End with
ActiveSheet.UsedRange.End(xlDown).Select
End Sub

Все отлично, ни чего не работает.

запись копируется на другой лист, но не копируется также на этом же листе
и курсор становится не в последнюю строку, а в первую в первый столбец.

Вы уж меня простите, но я мало (чуть-чуть) в этом понимаю. Помогите.
...
Рейтинг: 0 / 0
09.03.2011, 17:23
    #37156017
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
?апись копируется на другой лист, но не копируется также на этом же листе
и курсор становится не в последнюю строку, а в первую в первый столбец.Было бы неплохо увидеть файл, чтобы понять причину. Если у Вас на обоих листа кол-во заполненных строк можно вычислить по столбцу А(реально любой столбец можно подставить), то можно попробовать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ddd()
with ActiveCell.EntireRow
.Copy (Cells(rows.count,"A").End(xlUp).Offset( 1 ))
.Copy (Sheets("Лист2").Cells(Sheets("Лист2").rows.count,"A").End(xlUp).Offset( 1 ))
.Delete (xlUp)
End with
Cells(rows.count,"A").End(xlUp).Select
End Sub
...
Рейтинг: 0 / 0
09.03.2011, 17:30
    #37156038
Добавление новой строки
?,
?запись копируется на другой лист, но не копируется также на этом же листе
и курсор становится не в последнюю строку, а в первую в первый столбец.
ИМХО, строка копируется, становится активной и удаляется
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub ddd()
dim k&
k = ActiveCell.Row
with ActiveCell.EntireRow
.Copy (ActiveSheet.UsedRange.End(xlDown).Offset( 1 ))
.Copy (Sheets("Лист2").UsedRange.End(xlDown).Offset( 1 ))
'.Delete (xlUp)
End with
ActiveSheet.Rows(k).Delete
ActiveSheet.UsedRange.End(xlDown).Select
End Sub
...
Рейтинг: 0 / 0
09.03.2011, 17:32
    #37156042
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
The_Prist , шама-ан.
Все отлично, работает, именно то что нужно.
Спасибо большо-ое.
...
Рейтинг: 0 / 0
09.03.2011, 17:44
    #37156075
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Всем спасибо.
Последнее предложение The_Prist, наиболее подходит.
пробуй камнем, все происходит тоже самое как и первое предложение The_Prist (не работает), но все равно спасибо.
...
Рейтинг: 0 / 0
11.03.2011, 23:20
    #37160627
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление новой строки
Именно поэтому я предпочитаю (прости, Shamanus!) использовать никак не .EntireXXX и .UsedRange, а обычную (СУБД) нумерацию по одному из столбцов первичным ключом и далее... далее хоть бинарным поиском, хоть взятием максимума из справочника...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Добавление новой строки / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]