到达想要的单元格——Offset属性( 二 )


文章插图
可以在循环中用Offset属性来移动单元格,从而遍历单元格区域来查找满足条件的单元格 。如下图所示的工作表:

到达想要的单元格——Offset属性

文章插图
现在要在单元格区域A2:A7中查找姓名为“赵六”的同学,并将他的分数加粗 。代码如下:
Sub OffsetExa1()
Dim rng As Range ‘声明单元格对象变量
Dim rngTotal As Range ‘声明单元格对象变量
Set rngTotal = Range(“A2:A7”) ‘将单元格区域赋值给单元格对象变量
Set rng = Range(“A2”) ‘将单元格赋值对单元格对象变量
‘遍历单元格区域
Do Until rng.Value = https://www.i8ku.com/2021/“”
If rng.Value = https://www.i8ku.com/2021/“赵六” Then ‘如果单元格值为赵六,则将其分数加粗
rng.Offset(0, 1).Font.Bold = True ‘使用Offset属性偏移到分数单元格
End If
Set rng = rng.Offset(1, 0) ‘将下一个单元格赋值给单元格对象变量
Loop
End Sub
由于本例中是在固定的单元格区域内循环,所以还可使用For Each结构来优化代码,For Each结构负责循环,Offset属性负责偏移到相应的单元格 。代码如下:
Sub OffsetExa2()
Dim rng As Range ‘声明单元格对象变量
Dim rngTotal As Range ‘声明单元格对象变量
Set rngTotal = Range(“A2:A7”) ‘将单元格区域赋值给单元格对象变量
‘遍历单元格区域
For Each rng In rngTotal
If rng.Value = https://www.i8ku.com/2021/“赵六” Then’如果单元格值为赵六,则将其分数加粗
rng.Offset(0, 1).Font.Bold = True ‘使用Offset属性偏移到分数单元格
End If
Next
End Sub
在很多程序中,经常需要先查找满足特定条件的单元格,然后以该单元格为基准,对其他单元格进行操作 。
下面,我们使用Offset属性对《Excel VBA解读(19):员工管理系统开发V1.0》中的系统进行优化,使代码更加灵活 。代码如下:
Sub TotalData1()
‘声明Worksheet变量
Dim wksInfo As Worksheet
Dim wksBaseInfo As Worksheet
‘声明单元格对象变量
Dim rng As Range
‘给wksInfo变量赋值
Set wksInfo =ThisWorkbook.Worksheets(“员工信息数据库”)
Set wksBaseInfo =ThisWorkbook.Worksheets(“员工基本信息表”)
‘将初始单元格赋值给变量
Set rng = wksInfo.Range(“A2”)
‘将<员工基本信息表>中数据自动填入<员工信息数据库>工作表
With wksBaseInfo
rng.Value = https://www.i8ku.com/2021/Range(“B2”).Value
rng.Offset(0, 1).Value =https://www.i8ku.com/2021/.Range(“F2”).Value
rng.Offset(0, 2).Value =https://www.i8ku.com/2021/.Range(“B3”).Value
rng.Offset(0, 3).Value =https://www.i8ku.com/2021/.Range(“D3”).Value
rng.Offset(0, 4).Value = https://www.i8ku.com/2021/.Range(“F3”).Value
rng.Offset(0, 5).Value =https://www.i8ku.com/2021/.Range(“B4”).Value
rng.Offset(0, 6).Value =https://www.i8ku.com/2021/.Range(“D4”).Value
rng.Offset(0, 7).Value =https://www.i8ku.com/2021/.Range(“F4”).Value
rng.Offset(0, 8).Value =https://www.i8ku.com/2021/.Range(“B5”).Value
rng.Offset(0, 9).Value =https://www.i8ku.com/2021/.Range(“F5”).Value
rng.Offset(0, 10).Value =https://www.i8ku.com/2021/.Range(“B6”).Value
rng.Offset(0, 11).Value =https://www.i8ku.com/2021/.Range(“D6”).Value
rng.Offset(0, 12).Value =https://www.i8ku.com/2021/.Range(“F6”).Value
rng.Offset(0, 13).Value = https://www.i8ku.com/2021/.Range(“B7”).Value
rng.Offset(0, 14).Value =https://www.i8ku.com/2021/.Range(“F7”).Value
rng.Offset(0, 15).Value =https://www.i8ku.com/2021/.Range(“B8”).Value

推荐阅读