单元格的复制/粘贴/剪切和删除

复制和粘贴单元格区域的完整过程描述如下:

code.python
>>> sht.Range("A1").Select()
>>> app.Selection.Copy()
>>> sht.Range("C1").Select()
>>> sht.Paste()

首先是选择要复制的单元格或区域,用Copy方法将数据复制到剪贴板,然后选择进行粘贴的目标单元格或区域,用Paste方法进行粘贴。省略选择单元格或区域的步骤,该代码可以简化为:

code.python
>>> sht.Range("A1").Copy(sht.Range("C1"))

其中,A1是源单元格,C1是目标单元格。

下面将单元格A1的当前区域复制到A4为左上角单元格的目标区域。

code.python
>>> sht.Range("A1").CurrentRegion.Copy(sht.Range("A4"))

效果如图2-13所示。

Document Image

图2-13 复制区域到指定位置

使用单元格对象的PasteSpecial方法,可以进行选择性粘贴。该方法的语法格式为:

code.python
单元格区域对象.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

PasteSpecial方法有4个参数:

• Paste参数:表示选择性粘贴的类型,取值如表2-2所示。

表2-2 Paste参数的取值

名 称 说 明
xlPasteAll -4104 粘贴全部内容。
xlPasteComments -4144 粘贴批注。
xlPasteFormats -4122 粘贴复制的源格式。
xlPasteFormulas -4123 粘贴公式。
xlPasteFormulasAndNumberFormats 11 粘贴公式和数字格式。
xlPasteValues -4163 粘贴值。
xlPasteValuesAndNumberFormats 12 粘贴值和数字格式。

• Operation参数:粘贴时是否与原有内容进行运算以及运算的类型。其取值如表2-3所示。

表2-3 Operation参数的取值

名 称 说 明
xlPasteSpecialOperationAdd 2 复制的数据将被添加到目标单元格中的值。
xlPasteSpecialOperationDivide 5 复制的数据将除以目标单元格中的值。
xlPasteSpecialOperationMultiply 4 复制的数据将与目标单元格中的值相乘。
xlPasteSpecialOperationNone -4142 粘贴操作中不执行任何计算。
xlPasteSpecialOperationSubtract 3 复制的数据将从目标单元格中的值中减去。

• SkipBlanks参数:忽略空白单元格。

• Transpose参数:对行列数据进行转置。

下面举例说明该方法的使用。

下面的代码把图2-8中工作表内第1行的数据复制到第4行。

code.python
>>> sht.Range("A1:E1").Copy()
>>> sht.Range("A4:E4").PasteSpecial(Paste=constants.xlPasteValues)

下面的代码先给单元格B1添加一个批注,然后将工作表内第1行的批注复制到第5行。

code.python
>>> sht.Range("B1").AddComment("CommentTest")
>>> sht.Range("A1:E1").Copy()
>>> sht.Range("A5:E5").PasteSpecial(Paste=constants.xlPasteComments)

下面的代码先给单元格A2添加一些格式,包括设置背景色为绿色,设置字体大小为20,加粗,倾斜,然后将工作表内第2行的格式复制到第6行。

code.python
>>> sht.Range("A2").Interior.Color=RGB(0,255,0)
>>> sht.Range("A2").Font.Size=20
>>> sht.Range("A2").Font.Bold=True
>>> sht.Range("A2").Font.Italic=True
>>> sht.Range("A2:E2").Copy()
>>> sht.Range("A6:E6").PasteSpecial(Paste=constants.xlPasteFormats)

最后得到的效果如图2-14所示。

Document Image

图2-14 选择性粘贴

剪切操作,实际上是进行复制粘贴以后把原来位置上的数据删除。使用单元格对象的Cut方法把源单元格的内容移动到目标单元格。下面把A1:E1区域的数据剪切到A7:E7:

code.python
>>> sht.Range("A1:E1").Cut(Destination=sht.Range("A7"))

参数名称Destination可以省略:

code.python
>>> sht.Range("A1:E1").Cut(sht.Range("A7"))

用单元格对象的Delete方法删除单元格或区域。Delete方法的语法格式为:

code.python
rng.Delete(Shift)

其中,rng为单元格或区域对象。shift参数的取值xlShiftToUp时,删除单元格后,该单元格下面的单元格依次往上移;值为xlShiftLeft时,删除单元格后,该单元格右侧的单元格依次往左移。如果不带参数,Excel会根据前面的引用情况自行判断使用哪个值。

下面删除单元格A2和区域C3:E5。

code.python
>>> sht.Range("A2").Delete(Shift=constants.xlShiftToUp)
>>> sht.Range("C3:E5").Delete()