使用VBA操作单元格(二)
End()
三、单元格的常见操作xlUp
1、插入单元格xlToLeft xlToRight
Range.Insert( [Shift:=移动方向],复制的起点 )xlDown
名 称值说 明
xlShiftDown-4121向下移动单元格。
xlShiftToRight-4161向右移动单元格。
注意:
如果省略本参数,将依据该区域的形状决定移动方向
当在当前单元格/区域插入单元格/区域后,插入的单元格/区域变为活动单元格/区域
1、在A2:B3插入单元格,原单元格向下移动:
Sheets(1).Range("A2:B3").insert shift:=xlShiftDown
2、在当前单元格上方插入一行:
irow = Selection.Row
Sheets(1).Rows(irow).insert
或者使用如下语句:
ActiveCell.EntireRow.insert
3、在当前单元格的左边插入一列:
ActiveCell.EntireColumn.insert
2、删除单元格
Range.Delete( [Shift:=移动方向] )
Shift指定如何移动单元格来进行填充。
xlShiftToLeft:右侧单元格向左移动
xlShiftUp:下方单元格向上移动
1、删除B2:C3单元格,并使下方单元格上移
Range("B2:C3").Delete xlShiftUp
2、删除指定行:
Rows("2:3").delete
Columns(5).delete
3、删除当前行
ActiveCell.EntireRow.delete
3、剪切单元格
Range.Cut( [Destination:=目标区域] )
将对象剪切到剪贴板,或者将其粘贴到指定的目的地
1、将A2单元格剪切到E1单元格
Range("A2").Cut Range("E1")
2、将A3:B5区域剪切到B11开始的区域
Range("A3:B5").Cut
Range("B11").Select
ActiveSheet.Paste
请注意Copy和Cut的区别(图解):
Copy后,可以pasteSpecial
Cut后,只可以Paste
4、清除内容
Range.ClearContents方法
Range.ClearFormats 方法 xlNone
1、如下先清除格式,再清除内容
Range("A2:C5").ClearFormats
Range("A2:C5").ClearContents
5、合并单元格
Range.Merge( 是否按行合并 ) 方法
1、合并A1:A5区域
Range("F1:G5").Merge '合并单元格
2、只合并A1:B5的行区域
Range("F1:G5").Merge True '跨越合并
取消合并:
Range.UnMerge 方法
请注意:
“合并后居中”与“合并单元格”均使用Merge方法
不同的是,一个设置了Range对象的HorizontalAlignment 属性,一个没有
6、自动调整行高/列宽
Range.AutoFit
更改区域中的列宽或行高以达到最佳匹配
1、自动调整第一行的行高到合适高度
Range("A1").EntireRow.AutoFit
7、排序
Range.Sort( [Key1:=排序字段1 , Order1:=次序1 , Key2:=排序字段2 , Type , Order2, Key3, Order3, Hea OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, Data) Key:指定排序的关键字
Order:指定排序顺序的 XlSortOrder 的常量之一。
xlAscending:升序,默认值
xlDescending:降序
Header:指定是否有表头
xlNo:没有表头,默认(2)
xlYes:有表头(1)
xlGuess:有Excel确定是否含有表头(0)
1、如下进行单条件和多条件排序
Range("A3").Sort [c1], Header:=xlGuess
Range("A5").CurrentRegion.Sort [c1], Header:=xlYes
Range("A1").CurrentRegion.Sort key1:=[a1], key2:=[b1], _
key3:=[c1], Order3:=xlDescending, Header:=xlYes
8、自动筛选
Range.AutoFilter( [Field:=偏移量 , Criteria1:=条件, Operator, Criteria2, VisibleDropDown ] )如果忽略全部参数,此方法仅在指定区域切换自动筛选下拉箭头的显示。
Field:作为筛选基准字段的偏移量,以最左侧为第一个字段
Criteria1:筛选条件,一个字符串;例如“101”。使用“=”可以查找空字段,
或者使用“<>”查找非空字段。如果省略,则搜索条件为All。
如果将Operator设置为xlTop10Items,则该参数指定数据项的个数。
Operator:指定筛选类型或两个筛选条件的关系的常量之一。
Criteria2:第二个筛选条件。与Criteria1和Operator一起组合成复合筛选条件
1、本示例从工作表 Sheet1 上的 A1 单元格开始筛选出一个清单,该清单中只显示字段2中的特定内容
Worksheets("Sheet1").Range("A1").AutoFilter 2, ">8" '筛选出大于8的内容
Worksheets("Sheet1").Range("A1").AutoFilter 2, "9" '筛选出=9的内容
Range("A1").AutoFilter 2, "9", xlOr, "7" '筛选出等于7或者9的内容
2、如果想对不同的字段筛选,可以多次调用AutoFilter
Range("A1").AutoFilter 1, "7"
Range("A1").AutoFilter 2, "<10"
Range("A1").AutoFilter 3, "9"
注意:使用AutoFilter进行筛选,应先判断是否已经在筛选状态,如果本来已经在筛选状态,
使用该方法,会取消筛选。判断筛选状态使用:
Worksheet.AutoFilterMode 属性
可读写。如果当前在工作表上显示有“自动筛选”下拉箭头,则该值为 True,也可通过此属性进行设
本属性与FilterMode属性相互独立
2、在程序运行前取消自动筛选:
Range("A2").Select
If ActiveSheet.AutoFilterMode = True Then
Selection.Autofilter
End If
或者可以直接设置:
ActiveSheet.AutoFilterMode = False
注意:可以将该属性设置为False以删除箭头,但不能将其设置为True来试图打开自动筛选。
der2, Key3, Order3, Header:=第一行是否包含标题 , DataOption3 ] )
bleDropDown ] )
示字段2中的特定内容:筛选出大于8的内容
选出=9的内容
来已经在筛选状态,
ue,也可通过此属性进行设置试图打开自动筛选。