Вставка строки с некоторыми данными из предыдущей

Программирование на Visual Basic for Applications
Error31
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.08.2006 (Пт) 9:44

Вставка строки с некоторыми данными из предыдущей

Сообщение Error31 » 18.08.2006 (Пт) 13:52

Условие:
есть некая таблица в Excel местами заполненная одинаковыми данными (столбцы с 1 по 4)
Задача:
необходимо добавить строку и скопировать в не значения из ряда ячеек предыдущей строки (в столбцах с 1 по 4 и текоторых других). Место вставки строки - следующая после строки на которой стоит курсор.
=======
Как добать строку - понятно, но вот каким образом задать копируемые ячейки?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.08.2006 (Пт) 14:03

По моему автору стоит перестать волноваться и попробовать более понятно сформулировать вопрос
Весь мир матрица, а мы в нем потоки байтов!

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 18.08.2006 (Пт) 14:13

Не понял, что именно ты хочешь, но попробуй последовать излюбленному совету ГСерга - запиши макрос, который делает то что тебе надо, и посмотри в нём код.
'Til the blood on your hans is the blood of the King!

Error31
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.08.2006 (Пт) 9:44

Сообщение Error31 » 18.08.2006 (Пт) 14:25

Хреновый из меня рассказчик поэтому смотрите образец таблицы.
Код того, что надо сделать выглядит "примерно" так:

Application.CutCopyMode = False
Selection.EntireRow.Insert
Range("A4:C4").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Range("F4").Select
Application.CutCopyMode = False ' ?что это такое я не знаю?
Selection.Copy
Range("F5").Select
ActiveSheet.Paste

Всё бы ничего только строка может быть не только четвертой, но и любой другой. Отсюда и вопрос - как определить номер той строки из которой нужно скопировать данные, если все что о ней известно это то, что она предшествует вставленной.

Надеюсь на этот раз понятно?
Вложения
Пример.xls
(23.5 Кб) Скачиваний: 49

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 18.08.2006 (Пт) 16:51

примерно так

Код: Выделить всё
Public Sub InsertAndFill()
    Dim i As Integer
   
    'берм адрес выделенной ячейки
    i = Selection.Row
   
    'всавляем строку
    Rows(CStr(i + 1)).Select
    Selection.EntireRow.Insert
   
    Range("A" & CStr(i) & ":C" & CStr(i)).Select
    Selection.Copy
    Range("A" & CStr(i + 1)).Select
    ActiveSheet.Paste
   
    Range("F" & CStr(i)).Select
    Selection.Copy
    Range("F" & CStr(i + 1)).Select
    ActiveSheet.Paste
 
End Sub


Error31
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.08.2006 (Пт) 9:44

Сообщение Error31 » 21.08.2006 (Пн) 9:36

Спасибо большое вроде работает!

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 21.08.2006 (Пн) 11:07

HandKot писал(а):примерно так

Код: Выделить всё
Public Sub InsertAndFill()
    Dim i As Integer
   
    'берм адрес выделенной ячейки
    i = Selection.Row
   
    'всавляем строку
    Rows(CStr(i + 1)).Select
    Selection.EntireRow.Insert
   
    Range("A" & CStr(i) & ":C" & CStr(i)).Select
    Selection.Copy
    Range("A" & CStr(i + 1)).Select
    ActiveSheet.Paste
   
    Range("F" & CStr(i)).Select
    Selection.Copy
    Range("F" & CStr(i + 1)).Select
    ActiveSheet.Paste
 
End Sub

Чтобы скопировать, не обязательно выделять
Код: Выделить всё

  '...
  'Range("A" & CStr(i) & ":C" & CStr(i)).Select
  'Selection.Copy
  Range("A" & CStr(i) & ":C" & CStr(i)).Copy
  '...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.08.2006 (Пн) 11:51

Чтобы вставить, тоже ;) Только использовать надо .PasteSpecial
Быть... или не быть. Вот. В чём вопрос?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 21.08.2006 (Пн) 12:28

Код: Выделить всё
Public Sub InsertAndFill()
  With Selection
    Rows(.Row + 1).EntireRow.Insert
   
    Range("A" & .Row & ":C" & .Row).Copy
    Range("A" & .Row + 1).PasteSpecial xlPasteAll
   
    Range("F" & .Row).Copy
    Range("F" & .Row + 1).PasteSpecial xlPasteAll
  End With
  Application.CutCopyMode = False
End Sub

;)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList