【转载】EXCELVBA-区域选择
1- 区域命名
ThisWorkbook.Names.Item("foo").RefersTo
=Tabelle1!$A$1:$B$1
ThisWorkbook.Names.Item("foo").RefersToRange.Address
$A$1:$B$1
2- ⼀个有趣的case
Sub按钮1_Click()
For j = 1To1000
Cells(j, 1) = j
For i = 1To10000
DoEvents
Next i
Next j
End Sub
3- ⾏号列号的⼏种抓取⽅式
Workbooks(1).Worksheets.Count
UsedRange.Rows.Count;      //使⽤⾏数
UsedRange.Columns.Count;  //使⽤列数
4- Range
4-1 定位单元格
Range(“A1”)
Cells(1,1)
Cells(1,”A”)
4-2 边缘区域的定位
Range(“A1”).Offset(1,1)
End(xlDown)
End(xlToLeft)
End(xlToRight)
EntireRow属性和EntireColumn属性可以获取单元格或单元格区域所在的整⾏或整列。⼀个典型的应⽤就是隐藏满⾜条件的单元格所在的⾏或列。此外,通过设置⾏或列的背景⾊,可以达到⾼亮显⽰所在单元格⾏或列的效果。
4-3 Resize
resize函数vbaResize能基于选中单元格调整range区域⼤⼩,选中current range中除标题⾏以外的单元格区域
Set rng=Range('B1').CurrentRegion
rng.Offset(1,0).Resize(rng.Rows.Count-1, rng.Columns.Count).Select
4-4 常⽤Region
CurrentRegion属性和UsedRange属性能够让我们“⽴刻获得”⼤⽚单元格区域。
CurrentRegion属性相当于在⼯作表中按下组合键,快速选择由空⾏和空列围成的⼀⽚单元格区域。
选取效果类似 - Ctrl + Shift + *
Range('A1').CurrentRegion.Select
Range('C3').CurrentRegion.Select
ActiveCell.CurrentRegion.Select
Dim rng As Range
Set rng = Range('B2').CurrentRegion
MsgBox'当前单元格区域共有'&rng.Rows.Count&'⾏,'&rng.Columns.Count&'列'
UsedRange属性⽤于获取⼯作表中由所使⽤的单元格围成的⽅形单元格区域,⽆论该区域内是否有空⾏或空列,即使在单元格中应⽤了格式但还没有输⼊内容,该单元格也会被UsedRange属性获取,从⽽包含到已使⽤的单元格区域中。
4-5 SpecialCells
VBA提供了SpecialCells⽅法,通过指定类型参数,快速定位到特定的单元格,例如参数指定为xlCellTypeLastCell则会定位到⼯作表中最后使⽤的单元格。
类似- Ctrl + G
Selection.SpecialCells(clCellTypeBlank).Select
Range.SpecialCells(Type,Value)
Dim rng as Range
Set rng = Selection.SpecialCells(clCellTypeLastCell)
rng.Address(RowAbsolute:=False,ColumnAbsolute:=False)
4-6 区域包含关系
使⽤Intersect⽅法。Union⽅法和Intersect⽅法还可以⽤于判断⼀个区域是否包含另⼀个区域,在此基础上,可以进⼀步编写代码保护单元格,防⽌⽤户修改特定的单元格区域。
rngIntersect = Intersect(Range('A1:C5'),Range('B3:E8'))
Range('A1:B2').Font.ColorIndex=3
Range('E8:F9').Font.ColorIndex=3
Union(Range('A1:B2'),Rande('E8:F9')).Font.ColorIndex=3
4-7 ⾮连续区域的选择
如果我们选择的单元格或者单元格区域不连续,⽽是分散在⼯作表的不同地⽅,那么可以使⽤Areas集合来获取这些区域。通过Areas集合,可以⽅便地获取⼀整块满⾜条件的区域。若配合循环语句使⽤,会使代码简洁⽽强⼤。
Dim rng As Range
For each rng InCells.SpecialCells(xlCellTypeConstants,1).Areas
rng.Interior.Color = RGB(255,0,0)
Next rng

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。