三)、處理單元格
1、直接賦值與引用
將變量、常量值直接賦給單元格、或?qū)卧竦闹抵苯淤x給變量、常量,這是在Excel中最簡(jiǎn)單的單元格賦值及引用方法。如下例將工作表"Sheet1"A1單元格的值賦給Integer變量I,并將I+1的值賦給當(dāng)前工作表中的B1單元格:
Dim I As Integer
I=Worksheets("Sheet1").Cells(1,1)
Cells(1,2).Select '選定B1單元格,使其成為當(dāng)前單元格
ActiveCell=I+1 '以I+1為當(dāng)前單元格賦值
2、用公式賦值
在宏的使用中,可能會(huì)更多地用公式來給單元格賦值。如下例將相對(duì)于活動(dòng)單元格左側(cè)第4列、向上第6行至向上第2行的單元格數(shù)值之和賦給活動(dòng)單元格(以本行、本列為第0行、0列):
ActiveCell.Formula="=AVERAGE(R[-6]C[-4]:R[-2]C[-4])"
3、引用其它工作表中的單元格
當(dāng)賦值公式中需要引用其它工作表中的單元格時(shí),在被引用的單元格前加上"工作表名!"即可。如以下即在賦值中引用了"Sheet1"工作表中的A1至A4單元格:
Range("E10").Formula="=SUM(Sheet1!R1C1:R4C1)"
但需注意的是:當(dāng)被引用的工作表名中含有某些可能引起公式歧義的字符時(shí),需要用單引號(hào)'將工作表名括起來。如:
Worksheets("Sheet1").ActiveCell.Formula="=Max('1-1剖面'!D3:D5)"
4、引用其它工作簿中的單元格
在被引用單元格所在工作表名前加上"[工作簿名]",即可引用其它工作簿中的單元格。如:
ActiveCell.Formula="=MAX([Book1.xls]Sheet3!R1C:RC[4])"
同樣需注意的是:當(dāng)被引用的工作簿名中含有某些可能引起公式歧義的字符時(shí),需要用中括號(hào)"["、"]"及單引號(hào)'將工作簿名括起來。如:
Cells(1,2).Formula="=MIN('[1995-2000總結(jié).xls]1995-1996年'! $A$1:$A$6)"
5、避免循環(huán)引用
在上述公式賦值過程中,應(yīng)避免在公式中引用被賦值的單元格,防止循環(huán)引用錯(cuò)誤。
6、添加批注
可按如下方法格給單元格添加批注:
Dim 批注文本 As String
批注文本="批注示例" '準(zhǔn)備批注文本
ActiveCell.AddComment '添加批注
ActiveCell.Comment.Text Text:=臨時(shí) '寫入批注文本
ActiveCell.Comment.Visible=False '隱藏批注
7、添加、刪除、復(fù)制、剪切、粘貼單元格
Range("D10").Insert Shift:=xlToRight '在D10單元格處添加一新單元格,原D10格右移
Range("C2").Insert Shift:=xlDown '在C2單元格處添加一新單元格,原C2格下移
Rows(2).EntireRow.Insert '在第2行前添加一空白行,原第2行下移
Columns(3).EntireColumn.Insert '在C列前添加一空白列,原C列右移
Columns("A:D").Delete Shift:=xlToLeft '刪除A列至D列,其右側(cè)列左移
Rows("3:5").Delete Shift:=xlUp '刪除第3行至第5行,其下方行上移
Range("B2").EntireRow.Delete '刪除第2行
Range("C4").EntireColumn.Delete '刪除C列
Range("B10:C13").Copy '復(fù)制B10至C13單元格區(qū)域
Cells(1,2).Cut '剪切B1單元格
Range("D10").Select
ActiveSheet.Paste '自D10單元格起粘貼剪貼板中的內(nèi)容
四)、圖表
1、工作表圖表
以下為一添加工作表圖表的實(shí)例。
Charts.Add after:=Worksheets("Sheet1") '在"Sheet1"工作表之后添加新圖表工作表
ActiveChart.ChartType=xlXYScatterSmooth '圖表類型為XY平滑線散點(diǎn)圖
ActiveChart.SetSourceData Source:=Sheets("結(jié)點(diǎn)坐標(biāo)").Range("A1:B69"), PlotBy:= _
xlColumns '圖表數(shù)據(jù)來源于"結(jié)點(diǎn)坐標(biāo)"工作表的A1至B69單元格,且按列繪圖。
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "節(jié)點(diǎn)坐標(biāo)" '圖表標(biāo)題"節(jié)點(diǎn)坐標(biāo)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x" 'x軸標(biāo)題"x"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y" 'y軸標(biāo)題"y"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True '顯示x軸主網(wǎng)格線,默認(rèn)情況下為顯示
.HasMinorGridlines = True '顯示x軸次網(wǎng)格線,默認(rèn)情況下為不顯示
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True '標(biāo)出x軸主網(wǎng)格值,默認(rèn)情況下為標(biāo)注
.HasMinorGridlines = False '取消x軸次網(wǎng)格值標(biāo)注,默認(rèn)情況下為不標(biāo)注
End With
ActiveChart.Legend.Position = xlRight '圖例顯示在圖表右側(cè)
2、嵌入式圖表
嵌入式圖表僅在添加方式及引用格式上與工作表圖表有所不同,而對(duì)圖表的設(shè)置基本類似。詳見下例。
Set嵌入表=ActiveSheet.ChartObjects.Add(0,0,200,300) '在當(dāng)前工作表(0,0)坐標(biāo)處添加寬200,高300的嵌入式圖表
嵌入表.Chart.ChartType = xlColumnClustered '圖表類型為簇狀柱形圖
嵌入表.Chart.SetSourceData Source:=Sheets(1).Range("A2:B2"), PlotBy:=xlRows '設(shè)置圖表數(shù)據(jù)來源
With 嵌入表.Chart
.HasTitle = False '無圖表標(biāo)題
.Axes(xlCategory, xlPrimary).HasTitle = False '無x軸標(biāo)題
.Axes(xlValue, xlPrimary).HasTitle = False '無y軸標(biāo)題
End With