Advance Excel VBA 系列之Rnage

2015年09月10日

Range 对象

一个Range对象代表一个单元格、一行、一列、包含一个或者更多单元格区域(可以是连续的单元格,也可以是不连续的单元格)中选定的单元格,甚至是多个工作表上的一组单元格,在操作Excel 内的任何区域之前都需要将其表示为一个Range对象,然后使用该Range对象的方法和属性。

用法如下:

Range(Cell1,Cell2): 返回一个单元格,或是单元格区域。

Sheet1.Range("A3:F6").Select

Cells(RowIndex, ColumnIndex)

For i = 1 To 100
 Sheet2.Cells(i, 1).Value = i '循环从1到100,填入A1-100.
Next

Offset(Rowoffset,Coloffset):返回一个基于引用的Range对象的单元格区域,正值,向下偏移,负值,向上偏移。

Activate:在Excel中,我们在同一时间只能操作一个Sheet,所以也就是在界面上激活一个Sheet。那么在VBA里面,我们就需要用到Activate函数,来帮助我们在不同的Sheet进行切换。

'当前活动的Sheet 是Sheet2.要操作Sheet3,就要提前激活
Sheet3.Activate
Sheet3.Range("A1:A10").Activate

Set rng = Sheet1.Range(“A65536”).End(xlUp):行列最后一个非空单元格

Sheet1.UsedRange.Rows.Count:算出整个Sheet内,已使用的Row的数目

查找单元格

'使用对话框,查找工作表中特定的内容单元格。
Dim StrFind As String
Dim Rng As Range
Dim FindAddress As String
StrFind = InputBox("Pls input the data:")

If Trim(StrFind) <> "" Then
   With Sheet1.Range("A:A")
       Set Rng = .Find(What:=StrFind, _ '使用Find找到第一个点
                       After:=.Cells(.Cells.Count), _
                       LookIn:=xlValues, _
                       LookAt:=xlWhole, _
                       SearchOrder:=xlByRows, _
                       SearchDirection:=xlNext, _
                      MatchCase:=False)

       If Not Rng Is Nothing Then
           FindAddress = Rng.Address '找到的位置
            Do
                Rng.Interior.ColorIndex = 6
                Set Rng = .FindNext(Rng) '找到下一个
           Loop While Not Rng Is Nothing And Rng.Address <> FindAddress
       End If
   End With
End If

使用Like来匹配列的值

pattern中的字符	符合string中的字符
?任何单一字符
*零个或多个字符
#任何一个数字 (0–9)
[charlist]	charlist中的任何单一字符
[!charlist]	不在charlist中的任何单一字符

Dim rng As Range
Dim a As Integer
a = 1
Test_Area.Activate
With Test_Area
    .Range("A:A").ClearContents
    For Each rng In .Range("B1:E1000") '确定搜索范围
        If rng.Text Like "*A*" Then	'使用Like,Pattern 
            .Range("A" & a) = rng.Text
            a = a + 1
        End If
    Next
End With

使用Range对象的Replace方法:Range(“A1:A5”).Replace “通州”, “南通”

使用Copy:

Application.DisplayAlerts = False
Sheet1.Range("A1").CurrentRegion.Copy Sheet2.Range("A1")
Application.DisplayAlerts = True
' Paste Special Value
With Range("A1:A10")
 .Copy
 .PasteSpecial Paste:=xlPasteValues
End With

Color

With Range("A1").Font
	.Name = "华文彩云"
	.FontStyle = "Bold"
	.Size = 18
	.ColorIndex = 3
	.Underline = 2
End With 在单元格中写入公式

Sheets("Main_Data").Cells(3, 117).Formula = "=IF(SUM(CZ3:DL3)=0,"" "",""MPS Change"")" '双引号", 在里面要用两个""来替代,其余的就是正常写入

本篇完结!

参考文献 《VBA常用技巧》

@This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License@