1、单元格引用
引用 |
含义 |
Range(“A1”) |
单元格A1 |
Range(“A1:B2”) |
A1到B2的单元格区域 |
Range(“C5:D9,G9:H16”) |
多块选定区域 |
·Range(“A:A”) |
A列 |
Range(“1:1”)
扫描二维码关注公众号,回复:
4251045 查看本文章
|
第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