2010-12-13 6 views
7

В Excel VBA есть способ безопасно использовать Range("A1:B2").ClearContent без удаления существующих формул в ячейках?Excel: формулы сохранения ClearContent

Просто чтобы сделать мой сценарий более ясным: я извлекаю свежие данные из базы данных и просто хочу стереть все на листе, но не формулы, потому что они разрешат некоторые данные в других полях с помощью vlookup.

+0

Тогда что вы пытаетесь очистить? – SLaks

+0

Только значения ячеек: числа, даты и текст – Lorenzo

+0

Формулы _create_ значения. – SLaks

ответ

10

Используйте свойство SpecialCells для получения только постоянных значений.

Sub RemoveConstants() 

    Dim rConstants As Range 

    Set rConstants = Sheet1.Range("A1:B2").SpecialCells(xlCellTypeConstants) 
    rConstants.ClearContents 

End Sub 
+2

Обратите внимание, что если ни одна из ячеек в диапазоне действительно не имеет значений, Excel выдает ошибку «Нет ячеек» в ответ на Set rConstants = Sheet1.Range («A1: B2»). SpecialCells (xlCellTypeConstants) – Murrah

+2

Добавьте «On Error Resume Next» в начале раздела, чтобы избежать ошибки «Нет ячеек». –