打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA简单入门11:Find方法
1. Find方法的作用

Find方法用来在指定的单元格区域中查找包含某个特定的数据,若找到符合条件的数据,则返回包含该数据的单元格(Range对象);若未发现相匹配的数据(无匹配的单元格对象),则返回Nothing。

2. Find方法的语法

[语法]

<单元格区域>.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])

<单元格区域>.Find (要查找的数据,开始查找的位置,查找的范围类型,完全匹配还是部分匹配,行列方式查找,向前向后查找,区分大小写,全角或半角,查找格式)

Find方法各个参数都可以在Excel常用的查找和替换操作框中找到对应,这里不一一阐述每个参数的作用。


3、LookAt参数,精确查找OR模糊查找

数据表格

完全匹配(精确查找):

Sub vv() '完全匹配(精确查找)

Dim Rng As Range

Set Rng = Range("a1:a11").Find("小乔", lookat:=xlWhole) '完全匹配(精确查找)

Debug.Print Rng.Address

End Sub

结果

上面代码在单元格A1:A11中查找小乔,如找到,即返回小乔所在的单元格。

Find方法在省略SearchOrder(查找方向)的情况下,默认是从上到下查找。

所以,Find方法之后返回第一个小乔所在的单元格A2。

部分匹配(模糊查找):

查找的代码改为,同样可以找到小乔,注意查找的内容是包含“乔”这个字符的单元格。

Set Rng = Range("a1:a11").Find("乔", lookat:=xlPart) '模糊查找


如果,找不到小乔这个单元格,则会返回Nothing(找不到对象,好惨!)

所以,可以用Nothing来判断,是否找到想要的数据(单元格对象)。

Rng单元格对象变量,一开始是没有赋值的,所以是NOTHING,如果找不到数据,当然没改变,还是NOTHING。

如果找到了数据,Rng就不再是空白什么都没有了,所以是Not Nothing。

在实践中,可以用Find方法来查找如入库单中某个入库单号码是否存在来录入数据。


4、其他参数,大家可以都百度查看详细的信息,这里不一一细述,因用的不多。

下面,可以用所学到的知识来制作入库单的录入功能了。

入库单这个样子

要求:要将黄色的数据都填入到数据表格当中。其中,单据代码作为单据的唯一标识。

入库单界面和数据存储界面分离,为两个工作表。

数据表格

应用的主要知识点:1、End属性 2、Find方法。

【1】End属性获取数据条数(循环次数)

R = Range("a6").End(xlDown).Row '返回数据的条数(序号列)

【2】Find方法返回Nothing判断单据代码是否存在,防止重复输入。

Dim Rng As Range

Set Rng = Sheets("数据表").Range("b:b").Find(Sheets("入库单").[g3], lookat:=xlWhole) '使用精确查找

参考代码如下:

Sub 录入()

Dim R As Long, R1 As Long

Dim Rng As Range

R = Sheets("入库单").Range("b6").End(xlDown).Row '数据条数(循环次数)

'检查单据代码是否存在,防止数据重复录入

Set Rng = Sheets("数据表").Range("b:b").Find(Sheets("入库单").[g3], lookat:=xlWhole)

If Rng Is Nothing Then '如果单据代码不存在,则录入数据

For i = 7 To R

'每次循环读取数据表的最新的空行行号(注意+1)

R1 = Sheets("数据表").Cells(Rows.Count, 2).End(xlUp).Row + 1

'两个工作表的单元格相对应数据,输出。

Sheets("数据表").Cells(R1, 1) = Sheets("入库单").[c3] '客户名称

Sheets("数据表").Cells(R1, 2) = Sheets("入库单").[g3] '单据代码

Sheets("数据表").Cells(R1, 3) = Sheets("入库单").[c4] '客户地址

Sheets("数据表").Cells(R1, 4) = Sheets("入库单").[g4] '开票日期

'产品代码、产品名称、数量、单价、金额

Sheets("数据表").Cells(R1, 5).Resize(1, 5).Value = Sheets("入库单").Cells(i, 2).Resize(1, 5).Value

Sheets("数据表").Cells(R1, 10) = Sheets("入库单").[c16] '经手人

Sheets("数据表").Cells(R1, 11) = Sheets("入库单").[g16] '开票人

Next

Else '如果单据代码重复,数据已经存在

MsgBox "单据代码:" & Sheets("入库单").[g3] & "已经存在,请勿重复输入"

Exit Sub '退出程序

End If

End Sub


需下载Excel文件,见下面链接。

链接: https://pan.baidu.com/s/1mAJr37NcB3e7yc5tNe2uOQ 密码: gbxe

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
完全手册Excel VBA典型实例大全:通过368个例子掌握
VBA程序集(第2辑)
用VBA替代公式
[VBA]关于查找方法(Find方法)的应用示例补充
工作中经常用到的VBA代码推荐
VBA利用自动筛选拆分数据到不同工作表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服