在Excel的鼠标操作中常用的操作有插入、删除、复制、粘贴等,下面来说明如何在Excel宏(VBA)中实现。

二、Range().Delete 表示删除

此处的Range()也可以是Cells()、Rows()、Columns()等。

参数shift:=xlShiftUp表示删除后,原来的单元格下面的元素集体向上移动;

shift:=xlShiftToLeft表示删除后,原来的单元格右边的元素集体向左移动。

Cells(3, 5).Delete shift:= xlShiftUp表示队伍是上下方向的,排头在上,排尾在下。要将第5支队伍的第3个位置的元素剔除掉,那么第5支队伍的第4个位置的元素和它后面的所有元素都向前移动1个位置。

Cells(3, 5).Delete shift:= xlShiftToLeft表示队伍是左右方向的,排头在左,排尾在右。要将第3支队伍的第5个位置的元素剔除掉,那么第3支队伍的第6个位置的元素和它后面的所有元素都向前移动1个位置。

Range(Cells(2, 4), Cells(6, 11)).Delete shift:= xlShiftUp表示队伍是上下方向的,排头在上,排尾在下。要将第4~11支队伍的第2~6个位置的元素剔除掉,那么第4~11支队伍的第7个位置的元素和它后面的所有元素都向前移动5个位置。

Range(Cells(2, 4), Cells(6, 11)).Delete shift:= xlShiftToLeft表示队伍是左右方向的,排头在左,排尾在右。要将第2~6支队伍的第4~11个位置的元素剔除掉,那么第2~6支队伍的第12个位置的元素和它后面的所有元素都向前移动8个位置。

下面介绍整行删除Rows().Delete和整列删除Columns().Delete,整行删除只能向上移动,整列删除只能向左移动,这时候shift:= xlShiftUp和shift:= xlShiftToLeft都不起作用,所以不用写它们。  

Rows(3).Delete表示队伍是上下方向的,排头在上,排尾在下。要将所有队伍的第3个位置的元素剔除掉,第4个位置的元素和它后面的所有元素都向前移动1个位置。

Rows("2:6").Delete表示队伍是上下方向的,排头在上,排尾在下。要将所有队伍的第2~6个位置的元素剔除掉,第7个位置的元素和它后面的所有元素都向前移动5个位置。

Columns(5).Delete表示队伍是左右方向的,排头在左,排尾在右。要将所有队伍的第5个位置的元素剔除掉,第6个位置的元素和它后面的所有元素都向前移动1个位置。

Columns("D:K").Delete表示队伍是左右方向的,排头在左,排尾在右。要将所有队伍的第4~11个位置的元素剔除掉,第12个位置的元素和它后面的所有元素都向前移动8个位置。

这里的Columns("D:K").Delete不能换成Columns("4:11").Delete否则会报错。暂时还没找到更好的办法。

这篇是在《Excel宏.Insert》的基础上改的,插入的过程就像有一个或一伙人找到位置要插队的过程,而删除的过程就像执法队将这个人或这伙人从该位置揪出去的过程。所以它们的参数也是一一对应的,Range().Insert shift:= xlShiftDown对应着Range().Delete shift:= xlShiftUp,Range().Insert shift:= xlShiftToRight对应着Range().Delete shift:= xlShiftToLeft。