2015-12-04 2 views
0

У меня есть диапазон (N1: N12) на листе1, и у меня есть код, который копирует и вставляет мне значения этого диапазона на вторичном листе2. Все работает, так или иначе, я не считал, что хочу другую кнопку, которая очищает только значения в диапазоне N1: N12, как только я их скопировал в sheet2. Я не знаю, как сохранить формулы в этом диапазоне, когда я хочу удалить значения. У вас есть идея? Я уже пробовал обычный макрос, который удаляет все, но это не то, что я хочу.ClearContents для констант, но не для формул

Sub Cancella() 
    Sheets("Foglio1").select 
    Range("N1:N12").clearcontents 
End Sub 

Код я использовать для копирования

Dim lastRow As Long 
    Sheets("Training Analysis").Range("P1:R13").Copy 

    lastRow = Sheets("Foglio1").Range("a65536").End(xlUp).Row 

    Sheets("Foglio1").Range("A" & lastRow + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True 
+0

Можете ли вы немного разъяснить? Вы хотите очистить ячейки 'N1: N12', после копирования на' Sheet2'? Можете ли вы опубликовать другой код, который у вас есть? Или вы хотите очистить диапазон «N1: N12», но сохраните формулы в «N1: N12» (если да, можете ли вы пояснить, что вы подразумеваете под этим?) – BruceWayne

+0

да, я хочу очистить ячейки N1: N12 после копирования sheet2. Это мой код, который я использую для копирования {Dim lastRow As Long Таблицы («Анализ обучения»). Диапазон («P1: R13»). Копировать lastRow = Листы («Foglio1»). Диапазон («a65536»). End (xlUp) .Row Листы («Foglio1»). Диапазон («A» & lastRow + 1) .PasteSpecial Paste: = xlPasteValues, Transpose: = True '} – AlbF

+0

(Можете ли вы добавить этот код в свой OP, и отметьте как код с '{}' тегами?) – BruceWayne

ответ

0

Заменить:

Range("N1:N12").clearcontents 

с:

For i = 1 To 12 
    If Not Cells(i, "N").HasFormula Then Cells(i, "N").ClearContents 
Next i 
+0

Что он пытался сделать? Очистить только ячейки без формулы? Я не мог понять его вопрос. – BruceWayne

+2

@BruceWayne Я предположил, что он хотел сохранить формулы. –

+0

Да, я попытался запустить этот код, но он не удаляет значения ни формулы. – AlbF

0

Существует подмножество Range.SpecialCells methodxlCellTypeConstants, что цели. Это можно разбить на xlNumbers, xlTextValues, xlErrors, xlLogical или их комбинацию.

With WorkSheets("Foglio1") 
    .Range("N1:N12").SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents 
End With 

И наоборот, клетки, содержащие формулы могут быть аналогичным образом ориентированы с xlCellTypeFormulas подмножества.

+0

С помощью этого кода я получил сообщение об ошибке, что он не может найти ячейки. – AlbF

+0

Код был протестирован и работает при условии, что вы набрали номера в диапазоне N1: N12 на листе ** Foglio1 **. Сложно предложить что-либо еще, не видя некоторые данные образца. – Jeeped

+0

Я получил номера в этом диапазоне, но когда я запускаю макрос, он дает мне ошибку времени выполнения «1004». – AlbF

Смежные вопросы