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