在Excel的鼠标操作中常用的操作有插入、删除、清除、复制、粘贴等,下面来说明如何在Excel宏(VBA)中实现。
四、Range().Copy 可以单独复制,也可以同时复制粘贴。
此处的Range()也可以是Cells()、Rows()、Columns()等。
Range("B3:C5").Copy 表示将Range("B3:C5")的内容、格式、备注等全部复制到内存。一般复制的目的就是为了粘贴,所以下一步就该粘贴了。
用.Copy粘贴的格式主要有一下几种:
(1) Cells(2,3).Copy Cells(5,7) 将2行3列单元格的信息复制粘贴到5行7列单元格。
(2) Range("B3:C5").Copy Cells(5,7) 将B3至C5这一块矩形区域的信息复制粘贴到以5行7列为左上角且同样大小的矩形区域。
(3) Rows(2).Copy Cells(5,1) 将第2行的信息复制粘贴到第5行。
(4) Rows("2:3").Copy Cells(5,1) 将第2至3行的信息复制粘贴到以第5行开始且行数相同的区域。
(5) Columns(2).Copy Cells(1,7) 将第2列的信息复制粘贴到第7列。
(6) Columns("B:C").Copy Cells(1,7) 将第B至C列的信息复制粘贴到以第7列开始且列数相同的区域。
五、Range().PasteSpecial 表示粘贴
Range1.Copy 第一步是复制Range1。
Range2.PasteSpecial 第二步是粘贴到Range2。
上面的两行实际上和下面这一行代码效果相同:
Range1.Copy Range2 将Range1复制后全部粘贴到Range2。
.PasteSpecial存在的意义主要是带上参数后,实现特殊方式的粘贴。下面介绍.PasteSpecial的四个参数及参数的取值(只介绍其中的一部分,说的多也记不住)。
(1)第一个参数Paste,涉及要粘贴什么信息。
Paste:= xlPasteAll 粘贴全部内容和格式(这是默认值,可以不写)。
Paste:= xlPasteValues 粘贴值(如果是数值或字符串,就直接粘贴;如果是公式,就粘贴计算结果;粘贴区域的格式保持不变)。
Paste:= xlPasteFormats 粘贴复制的源格式(相当于将粘贴区域的格式设置成复制区域的格式,粘贴区域的内容保持不变)。
还有一些参数我平时不用,就不写了,附在最后。
第二个参数:Operation,涉及复制来的数据如何运算。
Operation:= xlPasteSpecialOperationNone 粘贴区域的数据变为复制区域的数据(这是默认值,可以不写)。
Operation:= xlPasteSpecialOperationAdd 粘贴区域的数据变为粘贴区域与复制区域对应单元格数据之和。
Operation:= xlPasteSpecialOperationSubtract 粘贴区域的数据变为粘贴区域与复制区域对应单元格数据之差。
Operation:= xlPasteSpecialOperationMultiply 粘贴区域的数据变为粘贴区域与复制区域对应单元格数据之积。
Operation:= xlPasteSpecialOperationDivide 粘贴区域的数据变为粘贴区域与复制区域对应单元格数据之商。
这个参数我很少用,如果是块区域的格式完全相同,数据直接这样加减乘除的话,还是很方便的,该参数只对数字或者结果是数字的公式有效,如果粘贴位置或复制位置的内容是文本(字符串),选择进行加减乘除运算的话,会导致粘贴失败(同一次粘贴过程,粘贴区域内,能运算的单元格粘贴成功,不能运算的单元格粘贴失败,也可以理解为部分失败)。
第三个参数:SkipBlanks粘贴时,粘贴时是否跳过复制区域的空白部分。
SkipBlanks:= False 不跳过(这是默认值,可以不写)。粘贴区域全部进行粘贴,其中复制区域空白部分对应的粘贴位置也会变为空白。
SkipBlanks:= True 跳过。复制区域空白部分对应的粘贴位置保持不变,其它位置进行粘贴。
第四个参数:Transpose,粘贴时是否转置行和列。格式:Transpose:=False。
Transpose:= False 不转置(这是默认值,可以不写)。
Transpose:= True 转置,将复制来的矩形区域行变列,列变行后进行粘贴。
这四个参数之间是独立关系,可以搭配使用。完整的粘贴格式如下,参数的取值可以变更为其它对应的值。
Range("F2").PasteSpecial Paste:= xlPasteValues, Operation:= xlPasteSpecialOperationAdd, SkipBlanks := False, Transpose:= False
附
第一个参数Paste对应的值。
Paste:= xlPasteAll 粘贴全部内容(这是默认值,可以不写)。
Paste:= xlPasteValues 粘贴值。
Paste:= xlPasteFormats 粘贴复制的源格式。
Paste:= xlPasteValuesAndNumberFormats 粘贴值和数字格式。
Paste:= xlPasteFormulas 粘贴公式。
Paste:= xlPasteFormulasAndNumberFormats 粘贴公式和数字格式。
Paste:= xlPasteAllExceptBorders 粘贴除边框外的全部内容。
Paste:= xlPasteAllMergingConditionalFormats 将粘贴所有内容,并且将合并条件格式。
Paste:= xlPasteAllUsingSourceTheme 使用源主题粘贴全部内容。
Paste:= xlPasteColumnWidths 粘贴复制的列宽。
Paste:= xlPasteComments 粘贴批注。
Paste:= xlPasteValidation 粘贴有效性。