我有vba宏来删除一系列单元格。删除后,它会自动移动单元格。我不希望细胞向上移动,因为我在细胞下方有一个图表,如果它们被移动,一切都会受到干扰。
以下是我用来删除单元格的代码
ActiveSheet.UsedRange.Select
ActiveSheet.Range("C2:H8").Select
Selection.Delete
让我知道如何在不升级的情况下删除它们。
答案 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