脚本宝典收集整理的这篇文章主要介绍了【转载】EXCEL VBA-区域选择,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
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 = 1 To 1000 Cells(j, 1) = j For i = 1 To 10000 DoEvents Next i Next j End Sub
3- 行号列号的几种抓取方式
Workbooks(1).Worksheets.CountUsedRange.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能基于选中单元格调整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 非连续区域的选择
Dim rng As Range For each rng InCells.SpecialCells(xlCellTypeConstants,1).Areas rng.Interior.Color = RGB(255,0,0) Next rng
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 = 1 To 1000 Cells(j, 1) = j For i = 1 To 10000 DoEvents Next i Next j End Sub
3- 行号列号的几种抓取方式
Workbooks(1).Worksheets.CountUsedRange.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能基于选中单元格调整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 非连续区域的选择
Dim rng As Range For each rng InCells.SpecialCells(xlCellTypeConstants,1).Areas rng.Interior.Color = RGB(255,0,0) Next rng
以上是脚本宝典为你收集整理的【转载】EXCEL VBA-区域选择全部内容,希望文章能够帮你解决【转载】EXCEL VBA-区域选择所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。