[轉]VB.net中 excel 的range方法


本文轉自:https://blog.csdn.net/bigheadsheep/article/details/7711235

第五章 Range對象基本操作應用示例(1)
Range對象可能是VBA代碼中最常用的對象,Range對象可以是某一單元格、某一單元格區域、某一行、某一列、或者是多個連續或非連續的區域組成的區域。下面介紹Range對象的一些屬性和方法。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [示例05-01] 賦值給某單元格
[示例05-01-01]
Sub test1()
Worksheets("Sheet1").Range("A5").Value = 22
MsgBox "工作表Sheet1內單元格A5中的值為" _
& Worksheets("Sheet1").Range("A5").Value
End Sub
[示例05-01-02]
Sub test2()
Worksheets("Sheet1").Range("A1").Value = _
Worksheets("Sheet1").Range("A5").Value
MsgBox "現在A1單元格中的值也為" & _
Worksheets("Sheet1").Range("A5").Value
End Sub
[示例05-01-03]
Sub test3()
MsgBox "用公式填充單元格,本例為隨機數公式"
Range("A1:H8").Formula = "=Rand()"
End Sub
[示例05-01-04]
Sub test4()
Worksheets(1).Cells(1, 1).Value = 24
MsgBox "現在單元格A1的值為24"
End Sub
[示例05-01-05]
Sub test5()
MsgBox "給單元格設置公式,求B2至B5單元格區域之和"
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
End Sub
[示例05-01-06]
Sub test6()
MsgBox "設置單元格C5中的公式."
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-02] 引用單元格
Sub Random()
Dim myRange As Range
'設置對單元格區域的引用
Set myRange = Worksheets("Sheet1").Range("A1:D5")
'對Range對象進行操作
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
示例說明:可以設置Range對象變量來引用單元格區域,然后對該變量所代表的單元格區域進行操作。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-03] 清除單元格
[示例05-03-01]清除單元格中的內容(ClearContents方法)
Sub testClearContents()
MsgBox "清除指定單元格區域中的內容"
Worksheets(1).Range("A1:H8").ClearContents
End Sub
[示例05-03-02]清除單元格中的格式(ClearFormats方法)
Sub testClearFormats()
MsgBox "清除指定單元格區域中的格式"
Worksheets(1).Range("A1:H8").ClearFormats
End Sub
[示例05-03-03]清除單元格中的批注(ClearComments方法)
Sub testClearComments()
MsgBox "清除指定單元格區域中的批注"
Worksheets(1).Range("A1:H8").ClearComments
End Sub
[示例05-03-04]清除單元格中的全部,包括內容、格式和批注(Clear方法)
Sub testClear()
MsgBox "徹底清除指定單元格區域"
Worksheets(1).Range("A1:H8").Clear
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-04] Range和Cells
Sub test()
'設置單元格區域A1:J10的邊框線條樣式
With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End With
End Sub
示例說明:可用 Range(cell1, cell2) 返回一個 Range 對象,其中cell1和cell2為指定起始和終止位置的Range對象。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-05] 選取單元格區域(Select方法)
Sub testSelect()
'選取單元格區域A1:D5
Worksheets("Sheet1").Range("A1:D5").Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-06] 基於所選區域偏離至另一區域(Offset屬性)
[示例05-06-01]
Sub testOffset()
Worksheets("Sheet1").Activate
Selection.Offset(3, 1).Select
End Sub
示例說明:可用Offset(row, column)(其中row和column為行偏移量和列偏移量)返回相對於另一區域在指定偏移量處的區域。如上例選定位於當前選定區域左上角單元格的向下三行且向右一列處單元格區域。
[示例05-06-02] 選取距當前單元格指定行數和列數的單元格
Sub ActiveCellOffice()
MsgBox "顯示距當前單元格第3列、第2行的單元格中的值"
MsgBox ActiveCell.Offset(3, 2).Value
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-07] 調整區域的大小(Resize屬性)
Sub ResizeRange()
Dim numRows As Integer, numcolumns As Integer
Worksheets("Sheet1").Activate
numRows = Selection.Rows.Count
numcolumns = Selection.Columns.Count
Selection.Resize(numRows + 1, numcolumns + 1).Select
End Sub
示例說明:本示例調整所選區域的大小,使之增加一行一列。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-08] 選取多個區域(Union方法)
Sub testUnion()
Dim rng1 As Range, rng2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set rng1 = Range("A1:B2")
Set rng2 = Range("C3:D4")
Set myMultiAreaRange = Union(rng1, rng2)
myMultiAreaRange.Select
End Sub
示例說明:可用 Union(range1, range2, ...) 返回多塊區域,即該區域由兩個或多個連續的單元格區域所組成。如上例創建由單元格區域A1:B2和C3:D4組合定義的對象,然后選定該定義區域。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-09] 激活已選區域中的單元格
Sub ActivateRange()
MsgBox "選取單元格區域B2:D6並將C4選中"
ActiveSheet.Range("B3:D6").Select
Range("C5").Activate
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-10] 選取指定條件的單元格(SpecialCells方法)
Sub SelectSpecialCells()
MsgBox "選擇當前工作表中所有公式單元格"
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-11] 選取矩形區域(CurrentRegion屬性)
'選取包含當前單元格的矩形區域
'該區域周邊為空白行和空白列
Sub SelectCurrentRegion()
MsgBox "選取包含當前單元格的矩形區域"
ActiveCell.CurrentRegion.Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-12] 選取當前工作表中已用單元格(UsedRange屬性)
'選取當前工作表中已使用的單元格區域
Sub SelectUsedRange()
MsgBox "選取當前工作表中已使用的單元格區域" _
& vbCrLf & "並顯示其地址"
ActiveSheet.UsedRange.Select
MsgBox ActiveSheet.UsedRange.Address
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-13] 選取最邊緣單元格(End屬性)
'選取最下方的單元格
Sub SelectEndCell()
MsgBox "選取當前單元格區域內最下方的單元格"
ActiveCell.End(xlDown).Select
End Sub
示例說明:可以改變參數xlDown以選取最左邊、最右邊、最上方的單元格。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-14]設置當前單元格的前一個單元格和后一個單元格的值
Sub SetCellValue()
MsgBox "將當前單元格中前面的單元格值設為""我前面的單元格""" & vbCrLf _
& "后面的單元格值設為""我后面的單元格"""
ActiveCell.Previous.Value = "我前面的單元格"
ActiveCell.Next.Value = "我后面的單元格"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-15]確認所選單元格區域中是否有公式(HasFormula屬性)
Sub IfHasFormula()
If Selection.HasFormula = True Then
MsgBox "所選單元格中都有公式"
Else
MsgBox "所選單元格中,部分單元格沒有公式"
End If
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-16] 公式單元格操作
[示例05-16-01]獲取與運算結果單元格有直接關系的單元格
Sub CalRelationCell()
MsgBox "選取與當前單元格的計算結果相關的單元格"
ActiveCell.DirectPrecedents.Select
End Sub
[示例05-16-02]追蹤公式單元格
Sub Cal1()
MsgBox "選取計算結果單元格相關的所有單元格"
ActiveCell.Precedents.Select
End Sub
Sub TrackCell()
MsgBox "追蹤運算結果單元格"
ActiveCell.ShowPrecedents
End Sub
Sub DelTrack()
MsgBox "刪除追蹤線"
ActiveCell.ShowPrecedents Remove:=True
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-17] 復制單元格(Copy方法)
Sub CopyRange()
MsgBox "在單元格B7中寫入公式后,將B7的內容復制到C7:D7內"
Range("B7").Formula = "=Sum(B3:B6)"
Range("B7").Copy Destination:=Range("C7:D7")
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-18]獲取單元格行列值(Row屬性和Column屬性)
Sub RangePosition()
MsgBox "顯示所選單元格區域的行列值"
MsgBox "第 " & Selection.Row & "行 " & Selection.Column & "列"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-19]獲取單元格區域的單元格數及行列數(Rows屬性、Columns屬性和Count屬性)
Sub GetRowColumnNum()
MsgBox "顯示所選取單元格區域的單元格數、行數和列數"
MsgBox "單元格區域中的單元格數為:" & Selection.Count
MsgBox "單元格區域中的行數為:" & Selection.Rows.Count
MsgBox "單元格區域中的列數為:" & Selection.Columns.Count
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-20]設置單元格中的文本格式
[示例05-20-01] 對齊文本
Sub HorizontalAlign()
MsgBox "將所選單元格區域中的文本左右對齊方式設為居中"
Selection.HorizontalAlignment = xlHAlignCenter
End Sub
Sub VerticalAlign()
MsgBox "將所選單元格區域中的文本上下對齊方式設為居中"
Selection.RowHeight = 36
Selection.VerticalAlignment = xlVAlignCenter
End Sub
[示例05-20-02] 縮排文本(InsertIndent方法)
Sub Indent()
MsgBox "將所選單元格區域中的文本縮排值加1"
Selection.InsertIndent 1
MsgBox "將縮排值恢復"
Selection.InsertIndent -1
End Sub
[示例05-20-03] 設置文本方向(Orientation屬性)
Sub ChangeOrientation()
MsgBox "將所選單元格中的文本順時針旋轉45度"
Selection.Orientation = 45
MsgBox "將文本由橫向改為縱向"
Selection.Orientation = xlVertical
MsgBox "將文本方向恢復原值"
Selection.Orientation = xlHorizontal
End Sub
[示例05-20-04]自動換行(WrapText屬性)
Sub ChangeRow()
Dim i
MsgBox "將所選單元格設置為自動換行"
i = Selection.WrapText
Selection.WrapText = True
MsgBox "恢復原狀"
Selection.WrapText = i
End Sub
[示例05-20-05]將比單元格列寬長的文本縮小到能容納列寬大小(ShrinkToFit屬性)
Sub AutoFit()
Dim i
MsgBox "將長於列寬的文本縮到與列寬相同"
i = Selection.ShrinkToFit
Selection.ShrinkToFit = True
MsgBox "恢復原狀"
Selection.ShrinkToFit = i
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-21]設置條件格式(FormatConditions屬性)
Sub FormatConditions()
MsgBox "在所選單元格區域中將單元格值小於10的單元格中的文本變為紅色"
Selection.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlLessEqual, Formula1:="10"
Selection.FormatConditions(1).Font.ColorIndex = 3
MsgBox "恢復原狀"
Selection.FormatConditions(1).Font.ColorIndex = xlAutomatic
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-22]插入批注(AddComment方法)
Sub EnterComment()
MsgBox "在當前單元格中輸入批注"
ActiveCell.AddComment ("Hello")
ActiveCell.Comment.Visible = True
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-23]隱藏/顯示單元格批注
Sub CellComment()
MsgBox "切換當前單元格批注的顯示和隱藏狀態"
ActiveCell.Comment.Visible = Not (ActiveCell.Comment.Visible)
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-24]改變所選單元格的顏色
Sub ChangeColor()
Dim iro As Integer
MsgBox "將所選單元格的顏色改為紅色"
iro = Selection.Interior.ColorIndex
Selection.Interior.ColorIndex = 3
MsgBox "將所選單元格的顏色改為藍色"
Selection.Interior.Color = RGB(0, 0, 255)
MsgBox "恢復原狀"
Selection.Interior.ColorIndex = iro
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-25]改變單元格的圖案
Sub ChangePattern()
Dim p, pc, i
MsgBox "依Pattern常數值的順序改變所選單元格的圖案"
p = Selection.Interior.Pattern
pc = Selection.Interior.PatternColorIndex
For i = 9 To 16
With Selection.Interior
.Pattern = i
.PatternColor = RGB(255, 0, 0)
End With
MsgBox "常數值 " & i
Next i
MsgBox "恢復原狀"
Selection.Interior.Pattern = p
Selection.Interior.PatternColorIndex = pc
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-26]合並單元格
Sub MergeCells()
MsgBox "合並單元格A2:C2,並將文本設為居中對齊"
Range("A2:C2").Select
With Selection
.MergeCells = True
.HorizontalAlignment = xlCenter
End With
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-27]限制單元格移動的范圍
Sub ScrollArea1()
MsgBox "將單元格的移動范圍限制在單元格區域B2:D6中"
ActiveSheet.ScrollArea = "B2:D6"
End Sub
Sub ScrollArea2()
MsgBox "解除移動范圍限制"
ActiveSheet.ScrollArea = ""
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-28]獲取單元格的位置(Address屬性)
Sub GetAddress()
MsgBox "顯示所選單元格區域的地址"
MsgBox "絕對地址:" & Selection.Address
MsgBox "行的絕對地址:" & Selection.Address(RowAbsolute:=False)
MsgBox "列的絕對地址:" & Selection.Address(ColumnAbsolute:=False)
MsgBox "以R1C1形式顯示:" & Selection.Address(ReferenceStyle:=xlR1C1)
MsgBox "相對地址:" & Selection.Address(False, False)
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[示例05-29]刪除單元格區域(Delete方法)
Sub DeleteRange()
MsgBox "刪除單元格區域C2:D6后,右側的單元格向左移動"
ActiveSheet.Range("C2:D6").Delete (xlShiftToLeft)
End Sub


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM