1、單元格引用
引用
|
含義
|
Range(“A1”)
|
單元格A1
|
Range(“A1:B2”)
|
A1到B2的單元格區(qū)域
|
Range(“C5:D9,G9:H16”)
|
多塊選定區(qū)域
|
·Range(“A:A”)
|
A列
|
Range(“1:1”)
|
第1行
|
Range(“A:C”)
|
從A列到C列的區(qū)域
|
Range(“1:5”)
|
從第1行到第5行的區(qū)域
|
Range(“1:1,3:3,5:5”)
|
第1,3,5行
|
2、行列引用
引用
|
含義
|
Rows(1)
|
第1行
|
Rows
|
工作表上的所有行
|
Columns(1)
|
第1列
|
Columns(“A”)
|
第1列
|
Columns
|
工作表上的所有列
|
3、活動(dòng)單元格
Sub test()
Debug.Print ActiveCell.Address '活動(dòng)單元格地址
[F3].Activate '激活指定活動(dòng)單元格
For index = 1 To Selection.Count '依次激活選中區(qū)域的每個(gè)單元格
Selection(index).Activate
Next
Selection = 1 '設(shè)置選中單元格的值
End Sub
4、設(shè)置單元格對齊
Range.HorizontalAlignment屬性設(shè)置單元格的水平對齊方式,取值如下:
名稱
|
含義
|
xlCenter
|
水平居中
|
xlDistributed
|
分散對齊
|
xlJustify
|
兩端對齊
|
xkLeft
|
左對齊
|
xlRight
|
右對齊
|
例:
Worksheets(1).Range("A:B").HorizontalAlignment = xlCenter
Range.VerticalAlignment設(shè)置垂直對齊方式,取值如下:
名稱
|
含義
|
xlCenter
|
居中對齊
|
xlBottom
|
底端對齊
|
xlDistributed
|
分散對齊
|
xlJustify
|
兩端對齊
|
xlTop
|
頂端對齊
|
例:
Worksheets(1).Range("A:B").VerticalAlignment = xlTop
Range.AddIndent屬性指明當(dāng)前單元格中文本的對齊方式為水平或垂直等距分布時(shí),文本是否自動(dòng)縮進(jìn),設(shè)置為true則會(huì)自動(dòng)縮進(jìn).
5、單元格格式
Range.NumberFormat屬性設(shè)置單元格數(shù)字格式.
例:
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時(shí)mm分ss秒" '設(shè)置單元格格式
End Sub
Worksheets(1).Columns(Range("BD1").Column).WrapText = True ‘設(shè)置自動(dòng)換行
Rem 保留兩位小數(shù),并且每三位使用逗號隔開
Workbooks(wbName).Sheets("Sheet1").Columns("J").NumberFormat = "#,##0.00"
6、單元格字體及背景色設(shè)置
【例1】
Sub test()
With [a1].Font
.name = "微軟雅黑"
.Size = 12
.Color = RGB(25, 230, 122)
.Bold = True
End With
[a2].Interior.ColorIndex = 3 '背景色設(shè)置為紅色
[a3].Interior.Color = RGB(255, 0, 255)
End Sub
【例2】設(shè)置單元格中字符格式
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個(gè)字符設(shè)置為上標(biāo),第1個(gè)字符的顏色設(shè)置為紅色。注意,在每個(gè)單元格中都是用行列兩個(gè)標(biāo)號來定位某個(gè)字符的,因?yàn)橐粋€(gè)單元格可能有多行。
結(jié)果如下:
7、獲取用戶區(qū)域的行數(shù)及列數(shù)
rowCount = Worksheets(1).UsedRange.Rows.Count
colCount = Worksheets(1).UsedRange.Columns.Count
8、設(shè)置行高及列寬
Worksheets(1).Range("A:A").ColumnWidth = 20
Worksheets(1).Range("1:1").RowHeight = 120
選中區(qū)域列寬:Selection. Width;選中區(qū)域行高:Selection. Height;選中區(qū)域行數(shù):Selection.Rows.Count;選中區(qū)域列數(shù):Selection.Columns.Count;選中區(qū)域單元格數(shù):Selection.count.
Rem 自動(dòng)調(diào)整列寬
ThisWorkbook.Sheets("Sheet2").UsedRange.Columns.AutoFit
9、設(shè)置內(nèi)容顯示格式
Range.Font屬性代表指定對象的字體,有如下屬性:
名稱
|
說明
|
Background
|
返回或設(shè)置圖表中使用的文本的背景類型
|
Bold
|
返回或設(shè)置是否加粗
|
Color
|
返回或設(shè)置對象的主要顏色
|
FontStyle
|
返回或設(shè)置字體樣式,為String類型
|
Italic
|
返回或設(shè)置是否傾斜
|
Name
|
返回或設(shè)置字體名稱
|
Size
|
返回或設(shè)置字號
|
Underline
|
下劃線類型
|
Strikethrough
|
如果文本中間有一條水平刪除線,則該屬性值為true
|
With Worksheets(1).Range("1:1").Font
.Size = 12
.Italic = True
.Color = vbRed
End With
10、獲取或設(shè)置隱藏的行
Range.Hidden屬性可以獲取或設(shè)置隱藏的行.
例:
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) = "隱藏的行數(shù)為:" & result
11、自動(dòng)填充
Range.AutoFill對指定區(qū)域的單元格執(zhí)行自動(dòng)填充功能。語法格式如下:
Range.AutoFIll(Destion,Type)
目標(biāo)區(qū)域必須包含源區(qū)域。
【示例】
Set sourcetemp = Worksheets(1).Range("A2:A5")
Set destiontemp = Worksheets(1).Range("A2:A20")
sourcetemp.AutoFill Destination:=destiontemp
12、刪除對象
Range.Delete刪除對象,語法格式如下:
Range.Delete(Shift),參數(shù)Shift指定調(diào)整單元格以替換刪除單元格的方式
【示例】將所有工作表內(nèi)容為“張三”的單元格全部刪除,并且單元格左移。
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將單元格區(qū)域數(shù)據(jù)復(fù)制到指定的區(qū)域或剪貼板中,語法格式如下:
Range.Copy(Destion)
如果省略Destion則復(fù)制到剪貼板中.
Range.PasteSpecial將內(nèi)容粘貼到Range,語法格式如下
Range.PasteSpecial(Paste,operation,SkipBlanks,Transpose).
參數(shù)paste取值如下:
值
|
含義
|
xlPasteAll
|
粘貼全部內(nèi)容
|
xlPasteAllExcepBorders
|
粘貼除邊框外的全部內(nèi)容
|
xlPasteMergingConditionalFormats
|
粘貼所有內(nèi)容,并且合條件格式
|
xlPasteAllUsingSourceFormat
|
使用源主題粘貼全部內(nèi)容
|
xlPasteFormulas
|
粘貼公式
|
xlPasteFormulasAndNumberFormats
|
粘貼公式和數(shù)字格式
|
xlPasteValues
|
粘貼值
|
xlPasteValuesAndNumberFormats·
|
粘貼值和數(shù)字格式
|
……
|
|
operation可選,要粘貼的操作,取值如下:
名稱
|
值
|
描述
|
xlPasteSpecialOperationAdd
|
2
|
復(fù)制的數(shù)據(jù)與目標(biāo)單元格中的值相加。
|
xlPasteSpecialOperationDivide
|
5
|
復(fù)制的數(shù)據(jù)除以目標(biāo)單元格中的值。
|
xlPasteSpecialOperationMultiply
|
4
|
復(fù)制的數(shù)據(jù)乘以目標(biāo)單元格中的值。
|
xlPasteSpecialOperationNone
|
-4142
|
粘貼操作中不執(zhí)行任何計(jì)算。
|
xlPasteSpecialOperationSubtract
|
3
|
復(fù)制的數(shù)據(jù)減去目標(biāo)單元格中的值。
|
SkipBlanks可選,如果設(shè)置為true,則不再粘貼剪貼板上區(qū)域中的空白單元格。
Transpose可選,如果設(shè)置為true,則在粘貼區(qū)域轉(zhuǎn)置行和列,默認(rèn)為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、向單元格填充相同數(shù)據(jù)
(1)Range.FillWodn方法
從指定區(qū)域的頂部單元格開始向下填充,直至該區(qū)域的底部。區(qū)域中首行單元格的內(nèi)容和格式將復(fù)制到區(qū)域中的其它行。
(2)Range.FillUp方法
從指定區(qū)域的頂部單元格開始向上填充,直至該區(qū)域的頂部。區(qū)域中尾行單元格的內(nèi)容和格式將復(fù)制到區(qū)域中的其它行。
(3)Range.FillLeft方法
從指定區(qū)域的最右邊單元格開始向左填充。區(qū)域中最右列單元格的內(nèi)容和格式將復(fù)制到區(qū)域中的其它列。
(4)Range.FillRight方法
從指定區(qū)域的最左邊單元格開始向右填充。區(qū)域中最左列單元格的內(nèi)容和格式將復(fù)制到區(qū)域中的其它列。
注:Range對象必須包括數(shù)據(jù)源單元格,并且數(shù)據(jù)源單元格為該區(qū)域的首單元格。
【示例】
Worksheets(1).Range("A2:H2").FillRight
15、刪除重復(fù)的列
Range.RemoveDuplicates方法從指定的區(qū)域中刪除重復(fù)的值。語法格式如下:
Range.RemoveDuplicates(Columns,Header)
參數(shù)說明:
Columns可選,搜索重復(fù)的列索引數(shù)組,如果省略該參數(shù),則刪除所有列都包含的記錄;
header可選,指定第1行是否為標(biāo)題行,xlNo為缺省值,xlYes表示是標(biāo)題行。
【示例】當(dāng)?shù)谝涣信c第二列相同時(shí)候表示重復(fù),首行為標(biāo)題行。
Worksheets(1).UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
16、排序操作
Range.Sort進(jìn)行排序操作。語法格式如下:
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、單元格輸入公式或者數(shù)組公式
Sub test()
Range("B1") = "=if(A1=""上海"",""√"",""×"")" '在B1輸入公式
Range("B1:B3").FillDown '從B1開始自動(dòng)向下填充至B3
Range("C1:C5").FormulaArray = "=row()" '輸入數(shù)組公式
With Range("C2")
If .HasArray = True Then ‘判斷該單元格是否存在數(shù)組公式
.CurrentArray.FormulaArray = "=sum(Row(1:5))" '將當(dāng)前的數(shù)組公式都變?yōu)?sum(Row(1:5)),不只是改變C2單元格的數(shù)組公式
Else
.FormulaArray = "=100-row()"
End If
End With
End Sub
18、其它常用方法
方法
|
說明
|
Range.AutoFit
|
更改指定的列寬或行高以達(dá)到最佳匹配。
|
Range.AtutoFilter
|
篩選功能
|
Rnage.BorderAround
|
設(shè)置邊框
|
Range.Clear
|
清除整個(gè)對象
|
Range.ClearComments
|
清除指定區(qū)域的所有單元格批注
|
Range.ClearContents
|
清除區(qū)域中的公式
|
Range.ClearFormats
|
清除對象的格式設(shè)置
|
Range.ClearHyperlinks
|
清除指定區(qū)域的所有的超鏈接
|
Range.Cut
|
將對象剪貼到指定的區(qū)域或剪貼板中.
|
Range.Find
|
查找操作
|
例:
Worksheets(1).Rows(1).AutoFit
Worksheets(2).UsedRange.ClearFormats
|