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