Страницы: 1 2 След.
RSS
VBA Вставка строки по условию
 
Доброго времен, вот и снова пришлось обратится за помощью!
Давненько тут не был, всё изменилось К ЛУЧШЕМУ!  :)  

По существу вопроса, поясню следующее- просю помощи в виде кода VBA.
Задача: при даблклике по номеру строки, надо скопировать оную и вставить её под копируемой, очистив  первые 18 ячеек, с сохранением форматирования .(или точнее формул в строке которую скопировали и вставили)
Буду благодарен за ответ!
Изменено: Андрей Калошин - 18.12.2013 00:28:10
 
Ага, как же... И макрос Вам, и пример в своем файле. Не-е...
 
:oops: кода текстом будет более чем достаточно
Изменено: Андрей Калошин - 17.12.2013 20:56:38
 
Вот же ж как уж где-то...
Где помогающий будет код писать? На потолке?
Ну, напишет, а Вы скажете:
а у меня вот тама не так, а вот здеся вот так. Переделывайте, не принимается!
жмем сюда
 
ну как то так
 
вот со вставленной строкой
 
в этом примере я записал макрорекордером действие вставки по нужным параметрам.
надо немного доделать, а именно:
сейчас вставляется под 8 строкой
а надо что бы вставка строки происходила именно под той строкой которую кликаем даблкликом на номере строки
:(  
вот сам Макрос:
Код
Rows("8:8") .Select 
Selection.Copy 
Rows("9:9") .Select 
Selection.Insert Shift:=xlDown 
Range("A9:R9") .Select 
Application.CutCopyMode = False 
Selection.ClearContents 
Range("A9") .Select
Изменено: Андрей Калошин - 17.12.2013 21:48:14
 
:cry:  Видно я всех чем то сильно обидел, не желая того.
Если так извиняйте.
Успехов всем ...
 
Цитата
при даблклике по номеру строки, надо скопировать оную и вставить её под копируемой
Используйте событие

Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.EntireRow.Insert xlDown
End Sub

 
 
то что вы предложили у меня не получилось вставить, (это конечный макрос или часть нужного?)
ошибка прикреплена как фото...

может быть мне этот макрос помогут   несколько откорректировать под мои задачи?
Код
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim eRange As Range, yy As Long
Set eRange = Range("eRange")  
yy = Target.Row
If yy > eRange.Row And yy < (eRange.Row + eRange.Rows.Count - 1) Then
    Target.Parent.Rows(yy).Insert
    Target.Parent.Rows(eRange.Row).Copy
    Target.Parent.Rows(yy).PasteSpecial xlPasteFormulas
End If
End Sub
Изменено: Андрей Калошин - 18.12.2013 00:32:14
 
Цитата
у меня не получилось вставить
Вставляйте в модуль листа, с которым работаете. Это пример события на двойной клик.
Макрос просто вставляет пустую строку в месте двойного клика,
сдвигая строки вниз. Ваш файл посмотреть не могу, у меня Excel2003.
 
Я его и вставил именно в тот лист где он нужен был, и получил ошибку которую сфоткал.
приложил обычный файл 2003 как форму данных
 
В вашем примере нет макросов
Попробуйте

Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Offset(1, 0).EntireRow.Insert xlDown
End Sub

 
Изменено: Kuzmich - 18.12.2013 01:30:39
 
я так и написал что обычный файл а макрос я редактором записанный выше выкладывал
сейчас попробую ваше решение.
Изменено: Андрей Калошин - 18.12.2013 01:41:44
 
Так лучшее  :)
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    With Target
        .EntireRow.Copy
        .Offset(1).EntireRow.Insert xlDown
        Range(.Offset(1).EntireRow.Cells(1, 1), .Offset(1).EntireRow.Cells(1, 18).ClearContents
    End With
End Sub
 
Сообщение на скрине говорит о том, что у Вас УЖЕ имеется аналогичная процедура.
 
что то ни как !
вставил в свой файл, убил его(копию)
вставил в пример как в 2003xlsx так и 2010 никаких действий
 
вот этот мой авто-записанный
работает по нужному мне условию, надо к нему привязать дабл клик на нужной строке

Rows("8:8" ;)  .Select Selection.Copy Rows("9:9" ;)  .Select Selection.Insert Shift:=xlDown Range("A9:R9" ;)  .Select Application.CutCopyMode = False Selection.ClearContents Range("A9" ;)  .Select
Изменено: Андрей Калошин - 18.12.2013 02:14:29
 
Если к этому автозаписанному привязать даблклик на нужной строке, получится то, что я уже выкладывал (только с мусором).
Почему с мусором будет работать?
 
RAN только что увидел ваше сообщение, после вставки вашего кода получил следующее:
 
Там при вставке "8)" заменилось смайлом. 8 я вставил, скобку потерял. На картинке же видно - скобку просит.
Изменено: RAN - 18.12.2013 02:39:06
 
Range(.Offset(1).EntireRow.Cells(1, 1), .Offset(1).EntireRow.Cells(1, 1  8)  .ClearContents
Где именно? у вас снова смайл
уберите в низу сообщения галочку показывать смайлы
Изменено: Андрей Калошин - 18.12.2013 02:45:11
 
18))
 
так, ошибка пропала, где кликать что бы он заработал
 
По строке))
 
на ячейки?
у меня снова ошибка,
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    With Target  .EntireRow.Copy  .Offset(1).EntireRow.Insert xlDown  Range(.Offset(1).EntireRow.Cells(1, 1), .Offset(1).EntireRow.Cells(1, 1  8)  .ClearContents    End WithEnd Sub


что не так?
и кликать надо по номеру строки?
Изменено: Андрей Калошин - 18.12.2013 02:58:55
 
Оформляйте код тегом.
У меня ошибки нет. Я бы добавил перед End Sub строчку Cancel = True, чтобы выйти из режима редактирования.
 
Андрей Калошин, Вы ОПЯТЬ забыли скобку
Код
...EntireRow.Cells(1, 18)).ClearContents     
 
если кликать по номеру строки не происходит ни чего, а если  на ячейку, следующее файл 2010 Офис

кликать нужно мне именно на номер строки как я в первом посте писал, так как в том файле есть уже дабл клик вызывающий форму
э для заполнения
Изменено: Андрей Калошин - 18.12.2013 03:06:59
Страницы: 1 2 След.
Читают тему
Наверх