当我清除行时,我失去了单元格的功能

时间:2015-08-18 10:42:59

标签: excel vba excel-vba

我想知道在从表中清除行时如何保存单元格格式。我有一个包含许多列的表,每列都有一个特定的公式或函数。我有一个按钮,通过清除所有旧行刷新表。所以问题是当我刷新时我失去了所有的功能。

Public Sub refresh()
'
' refresh Macro
'
' Touche de raccourci du clavier: Ctrl+y
'
Dim ws1 As Worksheet, ws2 As Worksheet, lr1 As Long

    Set ws1 = ThisWorkbook.Worksheets("Scénarios de menace")
    Set ws2 = ThisWorkbook.Worksheets("Analyse de risque S")

    ws2.Range("B6:AP" & ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row).Clear
    lr1 = ws1.Cells(ws1.Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
        ws1.Range("A1:A" & lr1).AutoFilter Field:=1, Criteria1:="x"
        ws1.Range("B2:AP" & lr1).SpecialCells(xlCellTypeVisible).Copy

        ws2.Range("B6").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        ws1.Range("A6:A" & lr1).AutoFilter
        ws2.Activate: ws2.Cells(1, 1).Activate
    Application.ScreenUpdating = True


End Sub

1 个答案:

答案 0 :(得分:2)

清除盒子上的内容。它清除了对象。完成后,对象没有值,没有格式,也没有公式。

如果要保留公式和格式,但保留行,则需要清除具有常量的单元格的内容,即不要清除整行。

您可能希望遍历行中的每个单元格或直接定位它们并使用ClearContents

但是,这似乎是浪费空间。

在任何情况下,使用Excel表并删除行可能更合适。因为,在Excel表中,任何新行都将自动继承公式和格式,因此您可以删除任何行并添加将自动执行到表设置的新行。