1、单元格引用
引用
|
含义
|
Range(“A1”)
|
单元格A1
|
Range(“A1:B2”)
|
A1到B2的单元格区域
|
Range(“C5:D9,G9:H16”)
|
多块选定区域
|
·Range(“A:A”)
|
A列
|
Range(“1:1”)
|
第1行
|
Range(“A:C”)
|
从A列到C列的区域
|
Range(“1:5”)
|
从第1行到第5行的区域
|
Range(“1:1,3:3,5:5”)
|
第1,3,5行
|
2、行列引用
引用
|
含义
|
Rows(1)
|
第1行
|
Rows
|
工作表上的所有行
|
Columns(1)
|
第1列
|
Columns(“A”)
|
第1列
|
Columns
|
工作表上的所有列
|
3、活动单元格
Sub test()
Debug.Print ActiveCell.Address '活动单元格地址
[F3].Activate '激活指定活动单元格
For index = 1 To Selection.Count '依次激活选中区域的每个单元格
Selection(index).Activate
Next
Selection = 1 '设置选中单元格的值
End Sub
4、设置单元格对齐
Range.HorizontalAlignment属性设置单元格的水平对齐方式,取值如下:
名称
|
含义
|
xlCenter
|
水平居中
|
xlDistributed
|
分散对齐
|
xlJustify
|
两端对齐
|
xkLeft
|
左对齐
|
xlRight
|
右对齐
|
例:
Worksheets(1).Range("A:B").HorizontalAlignment = xlCenter
Range.VerticalAlignment设置垂直对齐方式,取值如下:
名称
|
含义
|
xlCenter
|
居中对齐
|
xlBottom
|
底端对齐
|
xlDistributed
|
分散对齐
|
xlJustify
|
两端对齐
|
xlTop
|
顶端对齐
|
例:
Worksheets(1).Range("A:B").VerticalAlignment = xlTop
Range.AddIndent属性指明当前单元格中文本的对齐方式为水平或垂直等距分布时,文本是否自动缩进,设置为true则会自动缩进.
5、单元格格式
Range.NumberFormat属性设置单元格数字格式.
例:
Worksheets(1).Columns(1).NumberFormat = "YYYY:MM:DD"
Worksheets(1).Columns(1).NumberFormat = "general"
Sub test()
Debug.Print [a1].NumberFormatLocal '获取a1单元格格式
[a1] = "1993/12/25"
[a:a].NumberFormatLocal = "yyyy年MM月dd日 hh时mm分ss秒" '设置单元格格式
End Sub
Worksheets(1).Columns(Range("BD1").Column).WrapText = True ‘设置自动换行
Rem 保留两位小数,并且每三位使用逗号隔开
Workbooks(wbName).Sheets("Sheet1").Columns("J").NumberFormat = "#,##0.00"
6、单元格字体及背景色设置
【例1】
Sub test()
With [a1].Font
.name = "微软雅黑"
.Size = 12
.Color = RGB(25, 230, 122)
.Bold = True
End With
[a2].Interior.ColorIndex = 3 '背景色设置为红色
[a3].Interior.Color = RGB(255, 0, 255)
End Sub
【例2】设置单元格中字符格式
Sub test()
With Worksheets("Sheet2").Range("H1")
.Clear
.Value = "Y=X2+2X+3"
.Characters(4, 1).Font.Superscript = True
.Characters(1, 1).Font.ColorIndex = 3
End With
End Sub
说明:将第4个字符设置为上标,第1个字符的颜色设置为红色。注意,在每个单元格中都是用行列两个标号来定位某个字符的,因为一个单元格可能有多行。
结果如下:
7、获取用户区域的行数及列数
rowCount = Worksheets(1).UsedRange.Rows.Count
colCount = Worksheets(1).UsedRange.Columns.Count
8、设置行高及列宽
Worksheets(1).Range("A:A").ColumnWidth = 20
Worksheets(1).Range("1:1").RowHeight = 120
选中区域列宽:Selection. Width;选中区域行高:Selection. Height;选中区域行数:Selection.Rows.Count;选中区域列数:Selection.Columns.Count;选中区域单元格数:Selection.count.
Rem 自动调整列宽
ThisWorkbook.Sheets("Sheet2").UsedRange.Columns.AutoFit
9、设置内容显示格式
Range.Font属性代表指定对象的字体,有如下属性:
名称
|
说明
|
Background
|
返回或设置图表中使用的文本的背景类型
|
Bold
|
返回或设置是否加粗
|
Color
|
返回或设置对象的主要颜色
|
FontStyle
|
返回或设置字体样式,为String类型
|
Italic
|
返回或设置是否倾斜
|
Name
|
返回或设置字体名称
|
Size
|
返回或设置字号
|
Underline
|
下划线类型
|
Strikethrough
|
如果文本中间有一条水平删除线,则该属性值为true
|
With Worksheets(1).Range("1:1").Font
.Size = 12
.Italic = True
.Color = vbRed
End With
10、获取或设置隐藏的行
Range.Hidden属性可以获取或设置隐藏的行.
例:
Dim result As String
result = ""
For i = 1 To Worksheets(1).UsedRange.Rows.Count
If Worksheets(1).Rows(i).Hidden = True Then
result = result & i & ";"
Worksheets(1).Rows(i).Hidden = False
End If
Next
Worksheets(1).Cells(1, 5) = "隐藏的行数为:" & result
11、自动填充
Range.AutoFill对指定区域的单元格执行自动填充功能。语法格式如下:
Range.AutoFIll(Destion,Type)
目标区域必须包含源区域。
【示例】
Set sourcetemp = Worksheets(1).Range("A2:A5")
Set destiontemp = Worksheets(1).Range("A2:A20")
sourcetemp.AutoFill Destination:=destiontemp
12、删除对象
Range.Delete删除对象,语法格式如下:
Range.Delete(Shift),参数Shift指定调整单元格以替换删除单元格的方式
【示例】将所有工作表内容为“张三”的单元格全部删除,并且单元格左移。
Dim tmp As Range
For Each tmp In Worksheets(1).UsedRange
If tmp.Value = "张三" Then
tmp.Delete shift:=xlShiftToLeft
End If
Next
13、拷贝与粘贴操作
Range.Copy将单元格区域数据复制到指定的区域或剪贴板中,语法格式如下:
Range.Copy(Destion)
如果省略Destion则复制到剪贴板中.
Range.PasteSpecial将内容粘贴到Range,语法格式如下
Range.PasteSpecial(Paste,operation,SkipBlanks,Transpose).
参数paste取值如下:
值
|
含义
|
xlPasteAll
|
粘贴全部内容
|
xlPasteAllExcepBorders
|
粘贴除边框外的全部内容
|
xlPasteMergingConditionalFormats
|
粘贴所有内容,并且合条件格式
|
xlPasteAllUsingSourceFormat
|
使用源主题粘贴全部内容
|
xlPasteFormulas
|
粘贴公式
|
xlPasteFormulasAndNumberFormats
|
粘贴公式和数字格式
|
xlPasteValues
|
粘贴值
|
xlPasteValuesAndNumberFormats·
|
粘贴值和数字格式
|
……
|
|
operation可选,要粘贴的操作,取值如下:
名称
|
值
|
描述
|
xlPasteSpecialOperationAdd
|
2
|
复制的数据与目标单元格中的值相加。
|
xlPasteSpecialOperationDivide
|
5
|
复制的数据除以目标单元格中的值。
|
xlPasteSpecialOperationMultiply
|
4
|
复制的数据乘以目标单元格中的值。
|
xlPasteSpecialOperationNone
|
-4142
|
粘贴操作中不执行任何计算。
|
xlPasteSpecialOperationSubtract
|
3
|
复制的数据减去目标单元格中的值。
|
SkipBlanks可选,如果设置为true,则不再粘贴剪贴板上区域中的空白单元格。
Transpose可选,如果设置为true,则在粘贴区域转置行和列,默认为false。
【示例1】
Sub test()
Sheet2.Activate
[a1:a9].Copy [f1]
[d1:d9].Copy
Sheet2.Paste Destination:=[g1]
End Sub
【示例2】
Worksheets(1).Range("A:B").Copy Destination:=Worksheets(2).Range("A:B")
Worksheets(1).Range("A:B").Copy '拷贝到剪贴板
Worksheets(3).Range("A:B").PasteSpecial skipblanks:=True
14、向单元格填充相同数据
(1)Range.FillWodn方法
从指定区域的顶部单元格开始向下填充,直至该区域的底部。区域中首行单元格的内容和格式将复制到区域中的其它行。
(2)Range.FillUp方法
从指定区域的顶部单元格开始向上填充,直至该区域的顶部。区域中尾行单元格的内容和格式将复制到区域中的其它行。
(3)Range.FillLeft方法
从指定区域的最右边单元格开始向左填充。区域中最右列单元格的内容和格式将复制到区域中的其它列。
(4)Range.FillRight方法
从指定区域的最左边单元格开始向右填充。区域中最左列单元格的内容和格式将复制到区域中的其它列。
注:Range对象必须包括数据源单元格,并且数据源单元格为该区域的首单元格。
【示例】
Worksheets(1).Range("A2:H2").FillRight
15、删除重复的列
Range.RemoveDuplicates方法从指定的区域中删除重复的值。语法格式如下:
Range.RemoveDuplicates(Columns,Header)
参数说明:
Columns可选,搜索重复的列索引数组,如果省略该参数,则删除所有列都包含的记录;
header可选,指定第1行是否为标题行,xlNo为缺省值,xlYes表示是标题行。
【示例】当第一列与第二列相同时候表示重复,首行为标题行。
Worksheets(1).UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
16、排序操作
Range.Sort进行排序操作。语法格式如下:
Range.Sort(Key1,Order1,Key2,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Oriention,SortMethod,DataOptionl,DataOptional2,DataOptional3)
key1,key2,key3为排序字段,order1, order2, order3为排序顺序,取值为xlAscending(升序)及xlDescending(降序)。
【示例】
Worksheets(1).UsedRange.Sort key1:=Range("A:A"), order1:=xlAscending, key2:=Range("B:B"), order2:=xlDescending, Header:=xlYes
resize属性
17、单元格输入公式或者数组公式
Sub test()
Range("B1") = "=if(A1=""上海"",""√"",""×"")" '在B1输入公式
Range("B1:B3").FillDown '从B1开始自动向下填充至B3
Range("C1:C5").FormulaArray = "=row()" '输入数组公式
With Range("C2")
If .HasArray = True Then ‘判断该单元格是否存在数组公式
.CurrentArray.FormulaArray = "=sum(Row(1:5))" '将当前的数组公式都变为=sum(Row(1:5)),不只是改变C2单元格的数组公式
Else
.FormulaArray = "=100-row()"
End If
End With
End Sub
18、其它常用方法
方法
|
说明
|
Range.AutoFit
|
更改指定的列宽或行高以达到最佳匹配。
|
Range.AtutoFilter
|
筛选功能
|
Rnage.BorderAround
|
设置边框
|
Range.Clear
|
清除整个对象
|
Range.ClearComments
|
清除指定区域的所有单元格批注
|
Range.ClearContents
|
清除区域中的公式
|
Range.ClearFormats
|
清除对象的格式设置
|
Range.ClearHyperlinks
|
清除指定区域的所有的超链接
|
Range.Cut
|
将对象剪贴到指定的区域或剪贴板中.
|
Range.Find
|
查找操作
|
例:
Worksheets(1).Rows(1).AutoFit
Worksheets(2).UsedRange.ClearFormats
|