Excel VBA 範例參考 - 電腦學習園地

文章推薦指數: 80 %
投票人數:10人

[範例01] 傳值給某單元格[範例01-01]Sub test1()Worksheets("Sheet1").Range("A5").Value = 22Ms. ... Excel VBA 範例參考 ... 關閉廣告 電腦學習園地 跳到主文 電腦教學園地提供各式電腦教學課程以及電腦教學影片,給網友學習使用 電腦教學電腦學習WordExcelAccessOutlookPowerPointVBVisualBasicVBA會聲會影威力導演 部落格全站分類:數位生活 相簿 部落格 留言 名片 公告版位 電腦學習園地影片教學http://www.youtube.com/c/pclearn Aug15Mon201100:09 ExcelVBA範例參考 [範例01]傳值給某單元格[範例01-01]Subtest1()Worksheets("Sheet1").Range("A5").Value=22MsgBox"工作表Sheet1內單元格A5中的值為"_&Worksheets("Sheet1").Range("A5").ValueEndSub[範例01-02]Subtest2()Worksheets("Sheet1").Range("A1").Value=_Worksheets("Sheet1").Range("A5").ValueMsgBox"現在A1單元格中的值也為"&_Worksheets("Sheet1").Range("A5").ValueEndSub[範例01-03]Subtest3()MsgBox"用公式填滿單元格,本例為隨機數公式"Range("A1:H8").Formula="=Rand()"EndSub[範例01-04]Subtest4()Worksheets(1).Cells(1,1).Value=24MsgBox"現在單元格A1的值為24"EndSub[範例01-05]Subtest5()MsgBox"給單元格設置公式,求B2至B5單元格區域之和"ActiveSheet.Cells(2,1).Formula="=Sum(B1:B5)"EndSub[範例01-06]Subtest6()MsgBox"設置單元格C5中的公式."Worksheets(1).Range("C5:C10").Cells(1,1).Formula="=Rand()"EndSub--------------------------------------[範例02]引用單元格SubRandom()DimmyRangeAsRange'設置對單元格區域的引用SetmyRange=Worksheets("Sheet1").Range("A1:D5")'對Range對象進行操作myRange.Formula="=RAND()"myRange.Font.Bold=TrueEndSub範例說明:可以設置Range對象變量來引用單元格區域,然後對該變量所代表的單元格區域進行操作。

--------------------------------------[範例03]清除單元格[範例03-01]清除單元格中的內容(ClearContents方法)SubtestClearContents()MsgBox"清除指定單元格區域中的內容"Worksheets(1).Range("A1:H8").ClearContentsEndSub[範例03-02]清除單元格中的格式(ClearFormats方法)SubtestClearFormats()MsgBox"清除指定單元格區域中的格式"Worksheets(1).Range("A1:H8").ClearFormatsEndSub[範例03-03]清除單元格中的批註(ClearComments方法)SubtestClearComments()MsgBox"清除指定單元格區域中的批註"Worksheets(1).Range("A1:H8").ClearCommentsEndSub[範例03-04]清除單元格中的全部,包括內容、格式和批註(Clear方法)SubtestClear()MsgBox"徹底清除指定單元格區域"Worksheets(1).Range("A1:H8").ClearEndSub--------------------------------------[範例04]Range和CellsSubtest()'設置單元格區域A1:J10的邊框線條樣式WithWorksheets(1).Range(.Cells(1,1),_.Cells(10,10)).Borders.LineStyle=xlThickEndWithEndSub範例說明:可用Range(cell1,cell2)返回一個Range對象,其中cell1和cell2為指定起始和終止位置的Range對象。

--------------------------------------[範例05]選取單元格區域(Select方法)SubtestSelect()'選取單元格區域A1:D5Worksheets("Sheet1").Range("A1:D5").SelectEndSub--------------------------------------[範例06]基於所選區域偏離至另一區域(Offset屬性)[範例06-01]SubtestOffset()Worksheets("Sheet1").ActivateSelection.Offset(3,1).SelectEndSub範例說明:可用Offset(row,column)(其中row和column為行偏移量和列偏移量)返回相對於另一區域在指定偏移量處的區域。

如上例選定位於當前選定區域左上角單元格的向下三行且向右一列處單元格區域。

[範例06-02]選取距當前單元格指定行數和列數的單元格SubActiveCellOffice()MsgBox"顯示距當前單元格第3列、第2行的單元格中的值"MsgBoxActiveCell.Offset(3,2).ValueEndSub--------------------------------------[範例07]調整區域的大小(Resize屬性)SubResizeRange()DimnumRowsAsInteger,numcolumnsAsIntegerWorksheets("Sheet1").ActivatenumRows=Selection.Rows.Countnumcolumns=Selection.Columns.CountSelection.Resize(numRows+1,numcolumns+1).SelectEndSub範例說明:本範例調整所選區域的大小,使之增加一行一列。

--------------------------------------[範例08]選取多個區域(Union方法)SubtestUnion()Dimrng1AsRange,rng2AsRange,myMultiAreaRangeAsRangeWorksheets("sheet1").ActivateSetrng1=Range("A1:B2")Setrng2=Range("C3:D4")SetmyMultiAreaRange=Union(rng1,rng2)myMultiAreaRange.SelectEndSub範例說明:可用Union(range1,range2,...)返回多塊區域,即該區域由兩個或多個連續的單元格區域所組成。

如上例創建由單元格區域A1:B2和C3:D4組合定義的對象,然後選定該定義區域。

--------------------------------------[範例09]啟動已選區域中的單元格SubActivateRange()MsgBox"選取單元格區域B2:D6並將C4選中"ActiveSheet.Range("B3:D6").SelectRange("C5").ActivateEndSub--------------------------------------[範例10]選取指定條件的單元格(SpecialCells方法)SubSelectSpecialCells()MsgBox"選擇當前工作表中所有公式單元格"ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).SelectEndSub--------------------------------------[範例11]選取矩形區域(CurrentRegion屬性)'選取包含當前單元格的矩形區域'該區域周邊為空白行和空白列SubSelectCurrentRegion()MsgBox"選取包含當前單元格的矩形區域"ActiveCell.CurrentRegion.SelectEndSub--------------------------------------[範例12]選取當前工作表中已用單元格(UsedRange屬性)'選取當前工作表中已使用的單元格區域SubSelectUsedRange()MsgBox"選取當前工作表中已使用的單元格區域"_&vbCrLf&"並顯示其地址"ActiveSheet.UsedRange.SelectMsgBoxActiveSheet.UsedRange.AddressEndSub--------------------------------------[範例13]選取最邊緣單元格(End屬性)'選取最下方的單元格SubSelectEndCell()MsgBox"選取當前單元格區域內最下方的單元格"ActiveCell.End(xlDown).SelectEndSub範例說明:可以改變參數xlDown以選取最左邊、最右邊、最上方的單元格。

--------------------------------------[範例14]設置當前單元格的前一個單元格和後一個單元格的值SubSetCellValue()MsgBox"將當前單元格中前面的單元格值設為""我前面的單元格"""&vbCrLf_&"後面的單元格值設為""我後面的單元格"""ActiveCell.Previous.Value="我前面的單元格"ActiveCell.Next.Value="我後面的單元格"EndSub--------------------------------------[範例15]確認所選單元格區域中是否有公式(HasFormula屬性)SubIfHasFormula()IfSelection.HasFormula=TrueThenMsgBox"所選單元格中都有公式"ElseMsgBox"所選單元格中,部分單元格沒有公式"EndIfEndSub--------------------------------------[範例16]公式單元格操作[範例16-01]獲取與運算結果單元格有直接關係的單元格SubCalRelationCell()MsgBox"選取與當前單元格的計算結果相關的單元格"ActiveCell.DirectPrecedents.SelectEndSub[範例16-02]追蹤公式單元格SubCal1()MsgBox"選取計算結果單元格相關的所有單元格"ActiveCell.Precedents.SelectEndSubSubTrackCell()MsgBox"追蹤運算結果單元格"ActiveCell.ShowPrecedentsEndSubSubDelTrack()MsgBox"刪除追蹤線"ActiveCell.ShowPrecedentsRemove:=TrueEndSub--------------------------------------[範例17]複製單元格(Copy方法)SubCopyRange()MsgBox"在單元格B7中寫入公式後,將B7的內容複製到C7:D7內"Range("B7").Formula="=Sum(B3:B6)"Range("B7").CopyDestination:=Range("C7:D7")EndSub--------------------------------------[範例18]獲取單元格行列值(Row屬性和Column屬性)SubRangePosition()MsgBox"顯示所選單元格區域的行列值"MsgBox"第"&Selection.Row&"行"&Selection.Column&"列"EndSub--------------------------------------[範例19]獲取單元格區域的單元格數及行列數(Rows屬性、Columns屬性和Count屬性)SubGetRowColumnNum()MsgBox"顯示所選取單元格區域的單元格數、行數和列數"MsgBox"單元格區域中的單元格數為:"&Selection.CountMsgBox"單元格區域中的行數為:"&Selection.Rows.CountMsgBox"單元格區域中的列數為:"&Selection.Columns.CountEndSub--------------------------------------[範例20]設置單元格中的文本格式[範例20-01]對齊文本SubHorizontalAlign()MsgBox"將所選單元格區域中的文本左右對齊方式設為居中"Selection.HorizontalAlignment=xlHAlignCenterEndSubSubVerticalAlign()MsgBox"將所選單元格區域中的文本上下對齊方式設為居中"Selection.RowHeight=36Selection.VerticalAlignment=xlVAlignCenterEndSub[範例20-02]縮排文本(InsertIndent方法)SubIndent()MsgBox"將所選單元格區域中的文本縮排值加1"Selection.InsertIndent1MsgBox"將縮排值恢復"Selection.InsertIndent-1EndSub[範例20-03]設置文本方向(Orientation屬性)SubChangeOrientation()MsgBox"將所選單元格中的文本順時針旋轉45度"Selection.Orientation=45MsgBox"將文本由橫向改為縱向"Selection.Orientation=xlVerticalMsgBox"將文本方向恢復原值"Selection.Orientation=xlHorizontalEndSub[範例20-04]自動換行(WrapText屬性)SubChangeRow()DimiMsgBox"將所選單元格設置為自動換行"i=Selection.WrapTextSelection.WrapText=TrueMsgBox"恢復原狀"Selection.WrapText=iEndSub[範例20-05]將比單元格列寬長的文本縮小到能容納列寬大小(ShrinkToFit屬性)SubAutoFit()DimiMsgBox"將長於列寬的文本縮到與列寬相同"i=Selection.ShrinkToFitSelection.ShrinkToFit=TrueMsgBox"恢復原狀"Selection.ShrinkToFit=iEndSub--------------------------------------[範例21]設置條件格式(FormatConditions屬性)SubFormatConditions()MsgBox"在所選單元格區域中將單元格值小於10的單元格中的文本變為紅色"Selection.FormatConditions.AddType:=xlCellValue,_Operator:=xlLessEqual,Formula1:="10"Selection.FormatConditions(1).Font.ColorIndex=3MsgBox"恢復原狀"Selection.FormatConditions(1).Font.ColorIndex=xlAutomaticEndSub--------------------------------------[範例22]插入批註(AddComment方法)SubEnterComment()MsgBox"在當前單元格中輸入批註"ActiveCell.AddComment("Hello")ActiveCell.Comment.Visible=TrueEndSub--------------------------------------[範例23]隱藏/顯示單元格批註SubCellComment()MsgBox"切換當前單元格批註的顯示和隱藏狀態"ActiveCell.Comment.Visible=Not(ActiveCell.Comment.Visible)EndSub--------------------------------------[範例24]改變所選單元格的顏色SubChangeColor()DimiroAsIntegerMsgBox"將所選單元格的顏色改為紅色"iro=Selection.Interior.ColorIndexSelection.Interior.ColorIndex=3MsgBox"將所選單元格的顏色改為藍色"Selection.Interior.Color=RGB(0,0,255)MsgBox"恢復原狀"Selection.Interior.ColorIndex=iroEndSub--------------------------------------[範例25]改變單元格的圖案SubChangePattern()Dimp,pc,iMsgBox"依Pattern常數值的順序改變所選單元格的圖案"p=Selection.Interior.Patternpc=Selection.Interior.PatternColorIndexFori=9To16WithSelection.Interior.Pattern=i.PatternColor=RGB(255,0,0)EndWithMsgBox"常數值"&iNextiMsgBox"恢復原狀"Selection.Interior.Pattern=pSelection.Interior.PatternColorIndex=pcEndSub--------------------------------------[範例26]合併單元格SubMergeCells()MsgBox"合併單元格A2:C2,並將文本設為居中對齊"Range("A2:C2").SelectWithSelection.MergeCells=True.HorizontalAlignment=xlCenterEndWithEndSub--------------------------------------[範例27]限制單元格移動的範圍SubScrollArea1()MsgBox"將單元格的移動範圍限制在單元格區域B2:D6中"ActiveSheet.ScrollArea="B2:D6"EndSubSubScrollArea2()MsgBox"解除移動範圍限制"ActiveSheet.ScrollArea=""EndSub--------------------------------------[範例28]獲取單元格的位置(Address屬性)SubGetAddress()MsgBox"顯示所選單元格區域的地址"MsgBox"絕對地址:"&Selection.AddressMsgBox"行的絕對地址:"&Selection.Address(RowAbsolute:=False)MsgBox"列的絕對地址:"&Selection.Address(ColumnAbsolute:=False)MsgBox"以R1C1形式顯示:"&Selection.Address(ReferenceStyle:=xlR1C1)MsgBox"相對地址:"&Selection.Address(False,False)EndSub--------------------------------------[範例29]刪除單元格區域(Delete方法)SubDeleteRange()MsgBox"刪除單元格區域C2:D6後,右側的單元格向左移動"ActiveSheet.Range("C2:D6").Delete(xlShiftToLeft)EndSub小結下面對Range對象的一些常用屬性和方法進行簡單的小結。

1、Activate與Select試驗下面的過程:SubSelectAndActivate()Range("B3:E10").SelectRange("C5").ActivateEndSub其結果如下圖所示:圖05-01:Select與ActivateSelection指單元格區域B3:E10,而ActiveCell則是單元格C5;ActiveCell代表單個的單元格,而Selection則可以代表單個單元格,也可以代表單元格區域。

2、Range屬性可以使用Application對象的Range屬性引用Range對象,如Application.Range(「B2」)『代表當前工作表中的單元格B2若引用當前工作表中的單元格,也可以忽略前面的Application對象。

Range(「A1:D10」)『代表當前工作表中的單元格區域A1:D10Range(「A1:A10,C1:C10,E1:E10」)『代表當前工作表中非連續的三個區域組成的單元格區域Range屬性也接受指向單元格區域對角的兩個參數,如:Range(「A1」,」D10」)『代表單元格區域A1:D10當然,Range屬性也接受單元格區域名稱,如:Range(「Data」)『代表名為Data的數據區域Range屬性的參數可以是對象也可以是字符串,如:Range(「A1」,Range(「LastCell」))3、單元格引用的快捷方式可以在引用區域兩側加上方括號來快速引用單元格區域,如:[B2][A1:D10][A1:A10,C1:C10,E1:E10][Data]但其引用的是絕對區域。

4、Cells屬性可以使用Cells屬性來引用Range對象。

如:ActiveSheet.CellsApplication.Cells『引用當前工作表中的所有單元格Cell(2,2)Cell(2,」B」)『引用單元格B2Range(Cells(1,1),Cells(10,5))『引用單元格區域A1:E10若想在一個單元格區域中循環時,使用Cells屬性是很方便的。

也可以使用Cells屬性進行相對引用,如:Range(「D10:G20」).Cells(2,3)『表示引用單元格區域D10:G20中第2行第3列的單元格,即單元格F11也可使用語句:Range(「D10」).Cells(2,3)達到同樣的引用效果。

5、Offset屬性Offset屬性基於當前單元格按所給參數進行偏移,與Cells屬性不同的是,它基於0即基準單元格為0,如:Range(「A10」).Cells(1,1)和Range(「A10」).Offset(0,0)都表示單元格A10當想引用於基準單元格區域同樣大小的單元格區域時,則Offset屬性是有用的。

6、Resize屬性可使用Resize屬性獲取相對於原單元格區域左上角單元格指定大小的區域。

7、SpecialCells方法SpecialCells方法對應於「定位條件」對話框,如圖05-02所示:圖05-02:「定位條件」對話框8、CurrentRegion屬性使用CurrentRegion屬性可以選取當前單元格所在區域,即周圍是空行和空列所圍成的矩形區域,等價於「Ctrl+Shift+*」快捷鍵。

9、End屬性End屬性所代表的操作等價於「Ctrl+方向箭」的操作,使用常量xlUp、xlDown、xlToLeft和xlToRight分別代表上、下、左、右箭。

10、Columns屬性和Rows屬性Columns屬性和Rows屬性分別返回單元格區域中的所有列和所有行。

11、Areas集合在多個非連續的單元格區域中使用Columns屬性和Rows屬性時,只是返回第一個區域的行或列,如:Range(「A1:B5,C6:D10,E11:F15」).Rows.Count將返回5。

此時應使用Areas集合來返回區域中每個塊的地址,如:ForEachRngInRange(「A1:B5,C6:D10,E11:F15」).AreasMsgBoxRng.AddressNextRng12、Union方法和Intersect方法當想從兩個或多個單元格區域中生成一個單元格區域時,使用Union方法;當找到兩個或多個單元格區域共同擁有的單元格區域時,使用Intersect方法。

全站熱搜 創作者介紹 alyoou 電腦學習園地 alyoou發表在痞客邦留言(0)人氣() E-mail轉寄 全站分類:數位生活個人分類:Excel此分類上一篇:Excelvba選取亮顯整列 此分類下一篇:Excel函數-自動抓取欄位輸入最後的內容 上一篇:Excelvba選取亮顯整列 下一篇:VBA語句集 ▲top 留言列表 發表留言 參觀人氣 本日人氣: 累積人氣: 文章分類 PSP(1)棒球(1)ProE(7)測試(10)騎鐵馬(4)燒錄軟體(0)學習(3)MV(29)感人(3)好玩(16)新奇(37)音樂(3)教學(41)VB程式設計(38)IOS(1)勵志(2)Windows7(10)windows8(1)防毒防駭相關(11)Access(18)影音教學(9)影像處理(3)PowerPoint(27)硬體維修DIY(43)會聲會影(2)部落格相關(8)Outlook(11)軟體(49)OFFICE(7)AutoCAD(86)Excel(67)Word(30)筆記(5)電腦網路(22)未分類文章(44) 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗



請為這篇文章評分?