處理單元格
1、用公式賦值
在宏的使用中,可能會(huì)更多地用公式來(lái)給單元格賦值。如下例將相對(duì)于活動(dòng)單元格左側(cè)第4列、向上第6行至向上第2行的單元格數(shù)值之和賦給活動(dòng)單元格(以本行、本列為第0行、0列):
ActiveCell.Formula="=AVERAGE(R[-6]C[-4]:R[-2]C[-4])"
2、引用其它工作表中的單元格
當(dāng)賦值公式中需要引用其它工作表中的單元格時(shí),在被引用的單元格前加上"工作表名!"即可。如以下即在賦值中引用了"Sheet1"工作表中的A1至A4單元格:
Range("E10").Formula="=SUM(Sheet1!R1C1:R4C1)"
但需注意的是:當(dāng)被引用的工作表名中含有某些可能引起公式歧義的字符時(shí),需要用單引號(hào)'將工作表名括起來(lái)。如:
Worksheets("Sheet1").ActiveCell.Formula="=Max('1-1剖面'!D3:D5)"
3、引用其它工作簿中的單元格
在被引用單元格所在工作表名前加上"[工作簿名]",即可引用其它工作簿(當(dāng)前是否打開(kāi)?)中的單元格。如:
ActiveCell.Formula="=MAX([Book1.xls]Sheet3!R1C:RC[4])"
同樣需注意的是:當(dāng)被引用的工作簿名中含有某些可能引起公式歧義的字符時(shí),需要用中括號(hào)"["、"]"及單引號(hào)'將工作簿名括起來(lái)。如:
Cells(1,2).Formula="=MIN('[1995-2000總結(jié).xls]1995-1996年'! $A$1:$A$6)"
4、添加、刪除、復(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)容
5、當(dāng)前單元格(活動(dòng)單元格)
刪除當(dāng)前單元格中數(shù)據(jù)的前后空格。
sub my_trim
Trim(ActiveCell.Value)
end sub
使單元格位移
sub my_offset
ActiveCell.Offset(0, 1).Select'當(dāng)前單元格向左移動(dòng)一格
ActiveCell.Offset(0, -1).Select'當(dāng)前單元格向右移動(dòng)一格
ActiveCell.Offset(1 , 0).Select'當(dāng)前單元格向下移動(dòng)一格
ActiveCell.Offset(-1 , 0).Select'當(dāng)前單元格向上移動(dòng)一格
end sub
如果上述程序產(chǎn)生錯(cuò)誤那是因?yàn)閱卧癫荒芤苿?dòng),為了解除上述錯(cuò)誤,我們可以往
sub my_offset 之下加一段代碼 on error resume next
注意以下代碼都不再添加 sub “代碼名稱(chēng)” 和end sub請(qǐng)自己添加!
給當(dāng)前單元格賦值:
ActiveCell.Value = "你好?。?!"
給特定單元格加入一段代碼:
例如:在A1單元格中插入"HELLO"
Range("a1").value="hello"
又如:你現(xiàn)在的工作簿在sheet1上,你要往sheet2的A1單元格中插入"HELLO"
1.sheets("sheet2").select
range("a1").value="hello"
或2.Sheets("sheet1").Range("a1").Value = "hello"
說(shuō)明:
1.sheet2被打開(kāi),然后在將“HELLO"放入到A1單元格中。
2.sheet2不被打開(kāi),將“HELLO"放入到A1單元格中。刪除當(dāng)前單元格中數(shù)據(jù)的前后空格。
sub my_trim
Trim(ActiveCell.Value)
end sub
使單元格位移
sub my_offset
ActiveCell.Offset(0, 1).Select'當(dāng)前單元格向左移動(dòng)一格
ActiveCell.Offset(0, -1).Select'當(dāng)前單元格向右移動(dòng)一格
ActiveCell.Offset(1 , 0).Select'當(dāng)前單元格向下移動(dòng)一格
ActiveCell.Offset(-1 , 0).Select'當(dāng)前單元格向上移動(dòng)一格
end sub
如果上述程序產(chǎn)生錯(cuò)誤那是因?yàn)閱卧癫荒芤苿?dòng),為了解除上述錯(cuò)誤,我們可以往
sub my_offset 之下加一段代碼 on error resume next
注意以下代碼都不再添加 sub “代碼名稱(chēng)” 和end sub請(qǐng)自己添加!
給當(dāng)前單元格賦值:
ActiveCell.Value = "你好!??!"
給特定單元格加入一段代碼:
例如:在A1單元格中插入"HELLO"
Range("a1").value="hello"
又如:你現(xiàn)在的工作簿在sheet1上,你要往sheet2的A1單元格中插入"HELLO"
1.sheets("sheet2").select
range("a1").value="hello"
或2.Sheets("sheet1").Range("a1").Value = "hello"
說(shuō)明:
1.sheet2被打開(kāi),然后在將“HELLO"放入到A1單元格中。
2.sheet2不被打開(kāi),將“HELLO"放入到A1單元格中。
設(shè)置單元格格式
當(dāng)前單元格定為:左對(duì)齊
Selection.HorizontalAlignment = xlLeft
當(dāng)前單元格定為:中心對(duì)齊
Selection.HorizontalAlignment = xlCenter
當(dāng)前單元格定為:右對(duì)齊
Selection.HorizontalAlignment = xlRight
當(dāng)前單元格為百分號(hào)風(fēng)格
Selection.Style = "Percent"
當(dāng)前單元格字體為粗體
Selection.Font.Bold = True
當(dāng)前單元格字體為斜體
Selection.Font.Italic = True
當(dāng)前單元格字體為宋體20號(hào)字
With Selection.Font
.Name = "宋體"
.Size = 20
四)、圖表
1、工作表圖表
以下為一添加工作表圖表的實(shí)例。
Charts.Add after:=Worksheets("Sheet1") '在"Sheet1"工作表之后添加新圖表工作表
ActiveChart.ChartType=xlXYScatterSmooth '圖表類(lèi)型為XY平滑線(xiàn)散點(diǎn)圖
ActiveChart.SetSourceData Source:=Sheets("結(jié)點(diǎn)坐標(biāo)").Range("A1:B69"), PlotBy:= _
xlColumns '圖表數(shù)據(jù)來(lái)源于"結(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)格線(xiàn),默認(rèn)情況下為顯示
.HasMinorGridlines = True '顯示x軸次網(wǎng)格線(xiàn),默認(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è)置基本類(lèi)似。詳見(jiàn)下例。
Set嵌入表=ActiveSheet.ChartObjects.Add(0,0,200,300) '在當(dāng)前工作表(0,0)坐標(biāo)處添加寬200,高300的嵌入式圖表
嵌入表.Chart.ChartType = xlColumnClustered '圖表類(lèi)型為簇狀柱形圖
嵌入表.Chart.SetSourceData Source:=Sheets(1).Range("A2:B2"), PlotBy:=xlRows '設(shè)置圖表數(shù)據(jù)來(lái)源
With 嵌入表.Chart
.HasTitle = False '無(wú)圖表標(biāo)題
.Axes(xlCategory, xlPrimary).HasTitle = False '無(wú)x軸標(biāo)題
.Axes(xlValue, xlPrimary).HasTitle = False '無(wú)y軸標(biāo)題
End With
五)、工作表
1、添加
Sheets.Add before:=Sheets(1) '在第1工作表前添加新工作表
Sheets.Add after:=Sheets(Sheets.Count) '在最后工作表后添加新工作表
2、移動(dòng)
ActiveSheet.Move before:=Sheets(2) '將當(dāng)前工作表移動(dòng)至第2工作表之前
3、命名
ActiveSheet.Name="工作表名" '將當(dāng)前工作表命名為"工作表名"
4、刪除
可以用以下語(yǔ)句刪除當(dāng)前工作表。
ActiveSheet.Delete
但在刪除前Excel會(huì)自動(dòng)彈出提示框,需在用戶(hù)確認(rèn)后方可執(zhí)行刪除。為避免這一干擾,可以先用以下語(yǔ)句關(guān)閉Excel的警告提示。
Application.DisplayAlerts = False
在刪除完成后,再重新打開(kāi)Excel的警告提示
Application.DisplayAlerts = True
隱藏工作表
'隱藏SHEET1這張工作表
sheets("sheet1").Visible=False
'顯示SHEET1這張工作表
sheets("sheet1").Visible=True
六)、工作簿
Excel的宏對(duì)工作簿的操作主要為保存。
Dim 存盤(pán)文件名 As String
ActiveWorkbook.Save '保存當(dāng)前工作簿
存盤(pán)文件名="工作表名"
ActiveWorkbook.SaveAs Filename:= 存盤(pán)文件名 '當(dāng)前工作簿另存為"工作表名.xls"
在另存時(shí),若指定的存盤(pán)文件名不包含路徑,則保存在該工作簿的打開(kāi)目錄下。而若此存盤(pán)文件已存在,也可用關(guān)閉Excel警告提示的方法以免其自動(dòng)彈出提示框。
保護(hù)工作簿
ActiveSheet.Protect
取消保護(hù)工作簿
ActiveSheet.Unprotect
給當(dāng)前工作簿改名為 "liu"
ActiveSheet.Name = "liu"
增加一個(gè)工作簿
Worksheets.Add
刪除當(dāng)前工作簿
activesheet.delete
打開(kāi)一個(gè)文件(工作簿)
Workbooks.Open FileName:="C:\My Documents\Book2.xls" (絕對(duì)路徑)(相對(duì)路徑?)
關(guān)閉當(dāng)前工作簿
ActiveWindow.Close