2

I have vba macro to delete a selection of cells. Its shifting the cells up automatically after deleting them. I don't want the cells to be shifted up, as I have a chart below the cells and everything gets disturbed if they are shifted.

Here is the code I am using to delete cells

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

Let me know how can I delete them without shifting up.

4

4 回答 4

3

如果我理解正确,我认为使用 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

表达式.删除(Shift)

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

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

于 2013-04-16T20:30:50.967 回答
3

你可以使用

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

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

于 2013-04-16T20:32:27.740 回答
1

您是否只考虑过 ClearContents?

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

如果合并单元格有问题,请尝试:

ActiveSheet.Range("C2:H8").Value = ""
于 2013-04-16T20:31:51.927 回答
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
于 2018-05-22T14:00:24.097 回答