天天看點

find vba 模糊_VBA簡單入門11:Find方法

1. Find方法的作用

Find方法用來在指定的單元格區域中查找包含某個特定的資料,若找到符合條件的資料,則傳回包含該資料的單元格(Range對象);若未發現相比對的資料(無比對的單元格對象),則傳回Nothing。

2. Find方法的文法

[文法]

.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])

.Find (要查找的資料,開始查找的位置,查找的範圍類型,完全比對還是部分比對,行列方式查找,向前向後查找,區分大小寫,全角或半角,查找格式)

Find方法各個參數都可以在Excel常用的查找和替換操作框中找到對應,這裡不一一闡述每個參數的作用。

find vba 模糊_VBA簡單入門11:Find方法

3、LookAt參數,精确查找OR模糊查找

find vba 模糊_VBA簡單入門11:Find方法

資料表格

完全比對(精确查找):

Sub vv() '完全比對(精确查找)

Dim Rng As Range

Set Rng = Range("a1:a11").Find("小喬", lookat:=xlWhole) '完全比對(精确查找)

Debug.Print Rng.Address

End Sub

find vba 模糊_VBA簡單入門11:Find方法

結果

上面代碼在單元格A1:A11中查找小喬,如找到,即傳回小喬所在的單元格。

Find方法在省略SearchOrder(查找方向)的情況下,預設是從上到下查找。

是以,Find方法之後傳回第一個小喬所在的單元格A2。

部分比對(模糊查找):

查找的代碼改為,同樣可以找到小喬,注意查找的内容是包含“喬”這個字元的單元格。

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

find vba 模糊_VBA簡單入門11:Find方法

如果,找不到小喬這個單元格,則會傳回Nothing(找不到對象,好慘!)

find vba 模糊_VBA簡單入門11:Find方法

是以,可以用Nothing來判斷,是否找到想要的資料(單元格對象)。

find vba 模糊_VBA簡單入門11:Find方法

Rng單元格對象變量,一開始是沒有指派的,是以是NOTHING,如果找不到資料,當然沒改變,還是NOTHING。

如果找到了資料,Rng就不再是空白什麼都沒有了,是以是Not Nothing。

在實踐中,可以用Find方法來查找如入庫單中某個入庫單号碼是否存在來錄入資料。

4、其他參數,大家可以都百度檢視詳細的資訊,這裡不一一細述,因用的不多。

下面,可以用所學到的知識來制作入庫單的錄入功能了。

find vba 模糊_VBA簡單入門11:Find方法

入庫單這個樣子

要求:要将黃色的資料都填入到資料表格當中。其中,單據代碼作為單據的唯一辨別。

入庫單界面和資料存儲界面分離,為兩個工作表。

find vba 模糊_VBA簡單入門11:Find方法

資料表格

應用的主要知識點:1、End屬性 2、Find方法。

【1】End屬性擷取資料條數(循環次數)

R = Range("a6").End(xlDown).Row '傳回資料的條數(序号列)

find vba 模糊_VBA簡單入門11:Find方法

【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

繼續閱讀