龙空技术网

Range对象 - EXCEL VBA(17)

银河统计工作室 623

前言:

此刻看官们对“vb读取指定文件夹中的文件名”可能比较注重,咱们都想要知道一些“vb读取指定文件夹中的文件名”的相关资讯。那么小编在网上收集了一些对于“vb读取指定文件夹中的文件名””的相关文章,希望小伙伴们能喜欢,我们一起来学习一下吧!

Range对象代表一个单元格、一行、一列、一个或多个单元格集合,在操作任何EXCEL单元格区域之前,都需要将其表示为一个Range对象。

导读

Range对象介绍

Range对象的常用属性

Range对象的常用方法

运用Range对象

引用Range对象

获取单元格信息

操作行和列

操作单元格

1、Range对象介绍

Range对象是VBA程序设计最常用的对象之一,Range对象提供了丰富的属性和方法可以通过VBA代码控制它们。

I、Range对象的常用属性

属性

备注

Address

返回Range对象的引用地址

Borders

返回一个Range集合,代表单元格区域的边框样式

Characters

返回Characters对象,表示某个区域内的字符,可为字符设置格式

ColumnWidth

返回或指定单元格区域列宽

CurrentRegion

返回Range对象,表示当前区域

End

返回Range对象,表示区域尾端单元格

Font

返回Font总体对象,表示指定区域的地址

Formular

返回或设置单元格公式

Height

返回或设置单元格高度

NumberFormat

返回或设置单元格的格式代码

Text

返回或设置单元格中显示的文本

Value

返回指定单元格中保存的值

Width

返回单元格区域的宽度

II、Range对象的常用方法

方法

备注

Activate

激活某个单元格,该单元格必须在当前选定区域内

AddComment

为区域添加批注

AutoFit

区域中单元格行高或列宽自动适应单元格内容

Clear

清除Range对象中的内容

ClearComments

清除指定单元格区域中的批注

ClearContents

清除区域中的公式

ClearFormats

清除区域中的格式设置

Copy

将单元格区域复制到指定区域或粘贴板

Cut

将区域内容裁剪到粘贴板或指定区域

Delete

删除指定的Range对象

Find

在区域内查找指定信息

Insert

中工作表中插入单元格或单元格区域

Merge

由指定Range对象创建合并单元格

Select

选择单元格对象

UnMerge

将合并区域分解为独立的单元格

2、运用Range对象

I、引用Range对象

中VBA程序中,需要频繁引用单元格区域,然后再使用相应的属性和方法对区域进行操作。单元格区域包括以下三种情况:

单个的单元格元格区域(连续或非连续)行或列

'使用A1样式引用单元格[A1].Value = 1000Dim rng1 As Object, rng2 As ObjectWorksheets("sheet1").Range("A1") = 1001Worksheets("sheet1").Range("A1:B5") = 1002Worksheets("sheet1").Range("A1:B5,C5:D9,F4:N6") = 1003Set rng1 = Worksheets("sheet1").Range("A1:B5")Set rng2 = Worksheets("sheet1").Range("C5:D9,F4:N6")Worksheets("sheet1").Range(rng1, rng2) = 1005'使用索引号引用单元格Cells(1, 1) = 501Cells(2, "D") = 501Range(Cells(1, 1), Cells(5, 5)) = 400Worksheets("sheet1").Cells(1, 1) = 200'使用Range对象的Offset属性偏移引用单元格Range("D3").Offset(, -1) = 100    '为C3赋值Range("A1").Offset(2, 2) = 100    '为C3赋值'*引用当前单元格向右3列向下3行的单元格*ActiveCell.Offset(rowOffset:=3, columnOffset:=3) = 100'引用行和列Range("A:C").Select         '选择A至C列Range("1:3").Select         '选择1至3行Range("A:A").Select         '选择A列Range("1:1").Select         '选择第1行Range("A3").EntireColumn    '选择单元格所在整列(C列)Range("A3").EntireRow       '选择单元格所在整行(3行)'引用区域边界Range("A3").End(xlUp) = 999          '引用A列最顶端单元格Range("A3").End(xlDown) = 999        '引用A列最底端单元格Range("C5").End(xlToLeft) = 999      '引用第5行最左端单元格Range("C5").End(xlToRight) = 999     '引用第5行最右端单元格'设置当前区域Dim rng As ObjectSet rng = Range("A1:B5").CurrentRegion'获取已使用区域Dim ws As ObjectSet ws = ActiveSheet.UsedRange   '引用当前工作表所有使用过的单元格MsgBox Application.WorksheetFunction.Sum(ws)Set ws = Range("A1").CurrentRegion   '引用和A1连续的区域MsgBox Application.WorksheetFunction.Sum(ws)'获取重叠区域引用Dim rng1 As Range, rng2 As Range, rng3 As RangeSet rng2 = Range("A1:E10")Set rng3 = Range("B2:C18")Set rng1 = Application.Intersect(rng2, rng3)MsgBox rng1.Address  '显示$B$2:$C$10'获取合并区域引用Dim rng As RangeSet rng = Application.Union(Range("A1:C3"), Range("E1:F5"))MsgBox rng.Address  '显示$A$1:$C$3:$E$1:$F$5Set rng = Application.Union(Range("A1:D5"), Range("B1:C4"))MsgBox rng.Address  '显示$A$1:$D$5'获取指定类型的单元格Dim rng As Range, rng1 As RangeSet rng = ActiveSheet.UsedRangeMsgBox rng.SpecialCells(xlCellTypeFormulas).Address    '显示含有公式的单元格地址MsgBox rng.SpecialCells(xlCellTypeConstants).Address   '显示含有常量的单元格地址'引用合并区域的子区域Dim i As IntegerDim str As StringDim rng1 As Range, rng2 As RangeSet rng1 = Range("A1:C3,E1:F5,A8:C9")rng1.SelectFor i = 1 To rng1.Areas.Count  Set rng2 = rng1.Areas(i)  str = "子区域" & i & vbCr & vbCr  str = str & "起始行:" & rng2.Row & vbCr  str = str & "起始列:" & rng2.Column & vbCr  str = str & "行数:" & rng2.Rows.Count & vbCr  str = str & "列数" & rng2.Columns.Count  MsgBox strNext iSet rng1 = NothingSet rng2 = Nothing'引用区域内的单个单元格Dim rng As RangeSet rng = Range("A1:E10").Item(4, 3)   '表示单元格C4'*当省略列参数后,索引方式为按行重左到右*Set rng = Range("A1:B2").Item(1)       '表示单元格A1Set rng = Range("A1:B2").Item(2)       '表示单元格B1Set rng = Range("A1:B2").Item(3)       '表示单元格A2Set rng = Range("A1:B2").Item(4)       '表示单元格B2

II、获取单元格信息

'获取单元格地址Dim rng As RangeSet rng = Range("A1:E10")MsgBox rng.Address                '默认显示绝对地址MsgBox rng.Address(True, True)    '同上MsgBox rng.Address(False, False)  '显示相对地址MsgBox rng.Address(True, False)   '显示绝对行相对列地址MsgBox rng.Address(False, True)   '显示相对行绝对列地址'获取区域信息Dim str As StringDim rng As RangeSet rng = Range("A1:E10")str = "当前区域信息:" & vbNewLinestr = str & "单元格数量:" & rng.Cells.Count & vbNewLinestr = str & "行数:" & rng.Rows.Count & vbNewLinestr = str & "列数:" & rng.Columns.Count & vbNewLinestr = str & "表头行数" & rng.ListHeaderRowsMsgBox str, vbOKOnly, "当前区域信息"Set rng = Nothing'统计区域中公式数量Dim rng As Range, c As Range, s As IntegerSet rng = Range("A1:E10")s = 0For Each c In rng.Cells  If c.HasFormula Then    s = s + 1  End IfNextIf s > 0 Then  MsgBox "当前区域单元格共有 " & s & " 公式"Else  MsgBox "当前区域单元格没有公式"End IfSet rng = Nothing'设置单元格颜色Dim rng As RangeSet rng = Range("A1:F10").Item(1, 6)rng.Interior.ColorIndex = 3Set rng = Range("A1:F10").Item(2, 6)rng.Interior.Color = RGB(150, 100, 50) 

III、操作行和列

'插入行和列Dim r As Integer, c As Integerr = Selection.RowActiveSheet.Rows(r).Insert       '插入行,当前单元格所在行下移c = Selection.ColumnActiveSheet.Columns(c).Insert    '插入列,当前单元格所在列右移'删除指定行或列Dim rng As RangeSet rng = Range("A1:E10")rng(4, 1).EntireRow.Delete      '删除指定区域第4行rng(4, 1).EntireColumn.Delete   '删除指定区域第1列rng.Rows(2).Delete              '删除指定区域第2行rng.Columns(1).Delete           '删除指定区域第1列rng.Delete                      '删除整个指定区域'隐藏指定行或列Dim ws As Worksheet, r As Integer, c As IntegerSet ws = ActiveSheetr = ActiveCell.Rowws.Rows(r).Hidden = Truec = ActiveCell.Columnws.Columns(c).Hidden = True'设置行高和列宽Dim ws As Worksheet, r As Integer, c As IntegerSet ws = ActiveSheetr = ActiveCell.Rowws.Rows(r).RowHeight = 50c = ActiveCell.Columnws.Columns(c).ColumnWidth = 10Set ws = Nothing

注:代码中,Dir函数判断指定文件是否存在。使用Dir函数还可以获取指定路径下的文件夹或所有文件名

IV、操作单元格

'给单元格设置公式Dim ws As WorksheetSet ws = ActiveSheetws.Range("A1").Formula = "=A9+A8"ws.Range("A2").Formula = "=SUM(D2:D2)"ws.Range("A3").FormulaR1C1 = "=SQRT(R1C1)"  'R1C1样式'给单元格设置错误值Dim arr As Variant, i As Integerarr = Array(xlErrNull, xlErrDiv0, xlErrValue, xlErrRef, xlErrName, xlErrNum, xlErrNA)For i = 1 To 7  ActiveSheet.Cells(i, 1) = CVErr(arr(i - 1))  'CVErr根据数组内置中错误值常量返回错误值Next i'使用IsError函数判断错误类型Dim err_val As VariantIf IsError(ActiveCell.Value) Then  err_val = ActiveCell.Value  Select Case err_val    Case CVErr(xlErrDiv0)      MsgBox "#DIV/0! error"    Case CVErr(xlErrNA)      MsgBox "#N/A error"    Case CVErr(xlErrName)      MsgBox "NAME? error"    Case CVErr(xlErrNull)      MsgBox "#NULL! error"    Case CVErr(xlErrNum)      MsgBox "#NUM! error"    Case CVErr(xlErrRef)      MsgBox "#REF! error"    Case CVErr(xlErrValue)      MsgBox "#VALUE! error"    Case Else      MsgBox "Unrecognizable error"  End SelectEnd If'设置打印区域Dim str As Stringstr = ActiveSheet.UsedRange.Address    '设置打印区域ActiveSheet.PageSetup.PrintArea = str  '打印设定区域str = ""'合并和拆分单元格Dim rng As RangeRange("A1", "A2").Merge    '合并单元格A1和A2Range("B1", "C3").Merge    '合并单元格区域B1:C3为一个单元格Set rng = ActiveSheet.Cells(1, 1)If rng.MergeCells Then rng.UnMerge  '单元格为合并单元格才能拆分'设置单元格移动范围Dim rng As Range, str As StringSet rng = ActiveCell.CurrentRegion   '设置当前单元格所在区域 str = rng.Address     ActiveSheet.ScrollArea = str         '根据区域地址设定滚动范围(区域为不能编辑)         'ActiveSheet.ScrollArea = ""         '解除区域滚动限制'清除单元格ActiveSheet.Range("A1:C3").Clear            '全部清除ActiveSheet.Range("A1:C3").ClearContents    '清除值和公式ActiveSheet.Range("A1:C3").ClearFormats     '清除格式设置ActiveSheet.Range("A1:C3").ClearComments    '清除批注'删除单元格区域Dim rng As RangeSet rng = ActiveSheet.Range("A1:E10")rng.Delete (xlShiftToLeft)  '右侧单元格左移'rng.Delete (xlShiftup)     '下方单元格上移Set rng = Nothing

在Excel VBA中,Range对象是非常重要的,它允许你引用和操作Excel工作表中的单元格和单元格区域。以下是Range对象的重要性:

数据读取和写入:使用Range对象,你可以读取和写入单元格或单元格区域中的数据。这使得你可以从工作表中提取数据,或将数据写入到指定的单元格中。你可以使用Value属性来读取和写入数据的值,或使用Formula属性来读取和写入公式。格式设置:Range对象还允许你对单元格或单元格区域的格式进行设置。你可以使用Font属性来设置字体样式,使用Interior属性来设置背景颜色,使用NumberFormat属性来设置数字格式,以及使用其他属性来设置边框、对齐方式等。数据操作:Range对象提供了各种方法来操作数据。你可以使用Sort方法对范围中的数据进行排序,使用AutoFilter方法进行筛选,使用Subtotal方法计算汇总值,使用Merge方法合并单元格等。循环和迭代:Range对象非常有用的一点是,你可以将其与循环结构(如For循环)结合使用,以遍历范围中的每个单元格或单元格区域。这使得你可以对特定范围中的每个单元格执行相同的操作,或者根据条件对范围中的单元格进行处理。查找和定位:Range对象还提供了Find方法,该方法允许你在范围中查找指定的值,并返回该值的位置。这对于在大型工作表中查找数据或定位特定值非常有用。

通过使用Range对象,你可以轻松地访问、操作和处理Excel工作表中的数据。它是Excel VBA编程中的核心对象之一,并且在处理数据和自动化任务时非常有用。

标签: #vb读取指定文件夹中的文件名 #excel vba 条件格式 #vb读取excel行数