删除单元格而不移动它们

时间:2013-04-16 20:17:49

标签: excel excel-vba delete-row shift vba

我有vba宏来删除一系列单元格。删除后,它会自动移动单元格。我不希望细胞向上移动,因为我在细胞下方有一个图表,如果它们被移动,一切都会受到干扰。

以下是我用来删除单元格的代码

ActiveSheet.UsedRange.Select
ActiveSheet.Range("C2:H8").Select
Selection.Delete

让我知道如何在不升级的情况下删除它们。

4 个答案:

答案 0 :(得分:3)

您可以使用

ActiveSheet.Range("C2:H8").ClearContents 

这将清空内容而不会移动任何东西。

答案 1 :(得分:2)

如果我理解正确,我认为使用ClearContents而不是Delete应该提供您正在寻找的功能。

http://msdn.microsoft.com/en-us/library/office/aa223828%28v=office.11%29.aspx

或者,您可以指定单元格的移动方式,如果这更适合您要执行的操作:

来自:http://msdn.microsoft.com/en-us/library/office/aa223863%28v=office.11%29.aspx

  

expression.Delete(SHIFT)

     

表达式必需。一个返回Range对象的表达式。

     

Shift可选变体。仅用于Range对象。指定如何移动单元格以替换已删除的单元格。可以是以下XlDeleteShiftDirection常量之一:xlShiftToLeft或xlShiftUp。如果省略此参数,Microsoft Excel将根据范围的形状决定。

答案 2 :(得分:1)

您是否考虑过ClearContents?

ActiveSheet.Range("C2:H8").ClearContents

如果您遇到合并单元格问题,请尝试:

ActiveSheet.Range("C2:H8").Value = ""

答案 3 :(得分:1)

在我的情况下,很容易使用Delete而不会干扰行序列,只需从最底线开始循环到所选范围的标题:

Cells(rw, 4).Activate
For i = rw To 1 Step -1
   Set Clr = Cells(i, 4)
   If Not Clr.Text Like "R*" Then
    Clr.EntireRow.Delete Shift:=xlUp

   End If
Next i