Страницы: 1
RSS
Очистка содержимого строк ниже заданной ячейки, макрос
 
Добрый день!
Код
Private Sub Paste()
Range("A1").Select
ActiveSheet.Paste
 End Sub

Помогите, пожалуйста, добавить команду, которая бы перед тем, как вставлять из буфера, очищала бы содержимое 30 строк ниже A1. Без задания конкретного диапазона, а по количеству строк.
Заранее спасибо!
 
30 строк - это величина постоянная или нужно  спросить пользователя?
 
Постоянная, без запроса
 
Цитата
SamuelW написал:
ниже A1. Без задания конкретного диапазона, а по количеству строк.
Т.е. выражение range("A2:A31') использовать нельзя?
 
Да, можно так сделать? или обязательно диапазон?
 
SamuelW, так?
Код
Private Sub Paste()
Range("A1").Select
Rows(ActiveCell.Row).Offset(1).Resize(30).ClearContents
Range("A1").Select
ActiveSheet.Paste
 End Sub
Изменено: casag - 11.11.2019 19:59:10
 
Можно, но не понимаю, почему нельзя А2:А31   :)
Указываем смещение относительно А1.
Код
Private Sub Paste()
    With Range("A1")
        Range(.Offset(1), .Offset(30)).Value = ""
    End With
    Range("A1").Select
    ActiveSheet.Paste
End Sub
 
Спасибо!!!
 
Код
Private Sub Paste()
  Range("A1").Select
  selection.offset(1).resize(30,1).clearcontents
  ActiveSheet.Paste
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, у тебя со вставкой проблем нет?
 
нет
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Странно: если перед вставкой использую  .ClearContents, то получаю ошибку (сбрасывается содержимое буфера обмена). Если использую  .Value = "" - всё нормально.
 
Цитата
Юрий М написал:
если перед вставкой использую  .ClearContents,то получаю ошибку (сбрасывается содержимое буфера обмена).
Здравствуйте, коллеги! Да вроде бы, так и раньше было при использовании метода ClearContents (проверил на 2003, 2007, 2016).
Владимир
 
Влад, привет! Но у Игоря ведь работает! ))
P.S. У меня сейчас 2013.
 
Еще пример. Может быть, Игорь копирует диапазон в другом экземпляре Excel или записывает буфер обмена из другого приложения?
Изменено: sokol92 - 11.11.2019 20:55:30
Владимир
 
Цитата
Юрий М написал:
У меня сейчас 2013
это год , время или халестиринчик подскочил? :-)
Коллеги, где написано что данные в буфер попадают из excel, Возьмите из блокнота и буфер обмена не очищается.  и вот тут я встану на сторону Игоря, который вечно брюзжит на предмет точности формулировок.
Изменено: БМВ - 11.11.2019 20:56:07
По вопросам из тем форума, личку не читаю.
 
извините, извините, есть проблема((
Юра, я поленился. создать файл, скопировать в него макрос а потом еще его и выполнять ( и даже это еще не все)
а с учетом того, что нужно было
- создать файл,
- скопировать в него макрос,
- открыть лист Excel,
- что-то скопировать в нем
- вернуться в редактор
- выполнить макроса
- и только тогда видна ПРОБЛЕМА!
на это я сразу и добровольно пойтить не смог. только когда прочитал развитие разговора стало интересно...
в данной ситуации очистить диапазон можно так:
Код
Private Sub Paste()
  Range("A1").Select
  Selection.Offset(1).Resize(30, 1) = Empty
  ActiveSheet.Paste
End Sub
не знал что ClearContents такой коварный, и боюсь, что не запомню этого (просто я вступил в такой период жизни, когда процессы забывания существенно интенсивнее процессов запоминания)
Изменено: Ігор Гончаренко - 11.11.2019 21:12:26
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
БМВ написал:
это год , время или халестиринчик подскачил?
Это давление )
Цитата
БМВ написал:
где написано что данные в буфер попадают из excel,
Мы на форуме по Excel - значит и умолчанием из Excel, раз не указано иного )
А из других приложений действительно всё работает.
 
Off
Цитата
Ігор Гончаренко написал:
просто я вступил в такой период жизни, когда процессы забывания существенно интенсивнее процессов запоминания
Цитата
БМВ написал:
я встану на сторону Игоря, который вечно брюзжит
но уже не помнит о чем  :D
Всем нормального давления и прочих показателей в норме  :)
Изменено: БМВ - 11.11.2019 21:35:10
По вопросам из тем форума, личку не читаю.
 
БМВ,
спасибо, все в норме)
позавчера и вчера играл в волейбол на песке и купался в Днепре... хотя, возможно я забыл, что лето уже закончилось
Изменено: Ігор Гончаренко - 11.11.2019 21:17:18
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
С аналогичной проблемой (.clearcontents) я столкнулся раньше: при попытке очистить несвязанные диапазоны. А .Value выручил  
 
Цитата
Ігор Гончаренко написал:  играл в волейбол на песке и купался в Днепре...
Значит, все в порядке. Еще пока не перепутал )
 
Off
Цитата
vikttur написал:
Значит, все в порядке. Еще пока не перепутал )



А вот когда совсем путают

По вопросам из тем форума, личку не читаю.
 
а теперь давайте прочитаем тему и напишем процедуру, которая не будучи привязаной ни к чему очистит определенное количество ячеек под заданной
Код
Function ClearNCellsUnderThis(Rg As Range, N As Long)
  Dim r&
  r = Rg.Parent.Rows.Count - Rg.Row: If r < N Then N = r
  If N <= 0 Then Exit Function Else r = Rg.Row + 1
  On Error Resume Next
  Rg.Parent.Cells(r, Rg.Column).Resize(N, 1).ClearContents
  ClearNCellsUnderThis = Err
End Function
если Вам нужно. допустим, под ячейкой NNN843 очистить 1962 ячейки - то так и пишете где-то в своем макросе:
Код
ClearNCellsUnderThis [NNN843], 1962
' а потом уже
ЧтоТоТам.Copy
{NNN843].PasteSpecial
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх