tft每日頭條

 > 科技

 > vba的find使用方法

vba的find使用方法

科技 更新时间:2025-01-10 13:41:54

在Excel中,選擇菜單“編輯”——“查找(F)…”命令或者按“Ctrl F”組合鍵,将彈出“查找和替換”對話框。

vba的find使用方法(VBA代碼--find方法2)1

  • 在“查找”選項卡中,'輸入需要查找的内容并設置相關選項後進行查找,Excel會将活動單元格定位在查找到的相應單元格。
  • 在ExcelVBA中使用與該功能對應的Find方法,提供了一種在單元格區域查找特定數據的簡單方式,并且比用傳統的循環方法進行查找的速度更快。

1. Find方法的作用

Find方法将在指定的單元格區域中查找包含參數指定數據的單元格,若找到符合條件的數據,則返回包含該數據的單元格;若未發現相匹配的數據,則返回Nothing。該方法返回一個Range對象,在使用該方法時,不影響選定區域或活動單元格。

2. Find方法的語法

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

[參數說明]

(1)<單元格區域>,必須指定,返回一個Range對象。

(2)參數What,必需指定。代表所要查找的數據,可以為字符串、整數或者其它任何數據類型的數據。對應于“查找與替換”對話框中,“查找内容”文本框中的内容。

(3)參數After,可選。指定開始查找的位置,即從該位置所在的單元格之後向後或之前向前開始查找(也就是說,開始時不查找該位置所在的單元格,直到Find方法繞回到該單元格時,才對其内容進行查找)。所指定的位置必須是單元格區域中的單個單元格,如果未指定本參數,則将從單元格區域的左上角的單元格之後開始進行查找

(4)參數LookIn,可選。指定查找的範圍類型,可以為以下常量之一:xlValues、xlFormulas或者xlComments,默認值為xlFormulas。對應于“查找與替換”對話框中,“查找範圍”下拉框中的選項“值、公式、批注”。

(5)參數LookAt,可選。可以為以下常量之一:XlWhole或者xlPart,用來指定所查找的數據是與單元格内容完全匹配還是部分匹配,默認值為xlPart。對應于“查找與替換”對話框中,“單元格匹配”複選框。

(6)參數SearchOrder,可選。用來确定如何在單元格區域中進行查找,是以行的方式(xlByRows)查找,還是以列的方式(xlByColumns)查找,默認值為xlByRows。對應于“查找與替換”對話框中,“搜索”下拉框中的選項。

(7)參數SearchDirection,可選。用來确定查找的方向,即是向前查找(XlPrevious)還是向後查找(xlNext),默認的是向後查找。

(8)參數MatchCase,可選。若該參數值為True,則在查找時區分大小寫。默認值為False。對應于“查找與替換”對話框中,“區分大小寫”複選框

(9)參數MatchByter,可選。是否區分全角或半角,在選擇或安裝了雙字節語言時使用。若該參數為True,則雙字節字符僅與雙字節字符相匹配;若該參數為False,則雙字節字符可匹配與其相同的單字節字符。對應于“查找與替換”對話框中,“區分全角/半角”複選框。

(10)參數SearchFormat,可選,指定一個确切類型的查找格式。對應于“查找與替換”對話框中,“格式”按鈕。當設置帶有相應格式的查找時,該參數值為True。

在每次使用Find方法後,參數LookIn、LookAt、SearchOrder、MatchByte的設置将保存。如果下次使用本方法時,不改變或指定這些參數的值,那麼該方法将使用保存的值。(在VBA中設置的這些參數将更改“查找與替換”對話框中的設置;同理,更改“查找與替換”對話框中的設置,也将同時更改已保存的值。也就是說,在編寫好一段代碼後,若在代碼中未指定上述參數,可能在初期運行時能滿足要求,但若用戶在“查找與替換”對話框中更改了這些參數,它們将同時反映到程序代碼中,當再次運行代碼時,運行結果可能會産生差異或錯誤。若要避免這個問題,在每次使用時建議明确的設置這些參數)

(findnext方法)介紹

說明:可以使用該方法繼續執行Find方法所進行的查找,查找前一個與Find方法中所指定條件的數據相匹配的單元格,返回代表該單元格的Range對象。在使用該方法時,不影響選定區域或活動單元格

語法:<單元格區域>.FindNext(After)

參數After Variant 類型,可選。指定一個單元格,查找将從該單元格之後開始。此單元格相應于從用戶界面查找時的活動單元格位置。注意,After 必須是查找區域中的單個單元格。請記住查找是從該單元格之後開始的;直到本方法環繞到此單元格時,才檢測其内容。如果未指定本參數,查找将從區域的左上角單元格之後開始。

(FindPrevious方法)介紹

說明:可以使用該方法繼續執行Find方法所進行的查找,查找前一個與Find方法中所指定條件的數據相匹配的單元格,返回代表該單元格的Range對象。在使用該方法時,不影響選定區域或活動單元格。

語法<單元格區域>.FindPrevious(After)

參數After,可選。代表所指定的單元格,将從該單元格之前開始進行查找。開始時不查找該位置所在的單元格,直到FindPrevious方法繞回到該單元格時,才對其内容進行查找。所指定的位置必須是單元格區域中的單個單元格,如果未指定本參數,則将從單元格區域的左上角的單元格之前開始進行查找。

當查找到指定查找區域的起始位置時,本方法将環繞至區域的末尾繼續查找。發生環繞後,為停止查找,可保存第一次找到的單元格地址,然後測試下一個查找到的單元格地址是否與其相同,作為判斷查找退出的條件,以避免出現死循環。

代碼示例:二次查找 findnext

Sub findnext1()

'二次查找,在上次查找的基礎上再次向後查找

Dim MRG As Range

Set MRG = Range("D:D").Find("A", lookat:=xlPart)

MsgBox MRG.Address

Set mrg1 = Range("D:D").FindNext(MRG)

MsgBox mrg1.Address

End Sub

代碼解析

sub findnext1()

Dim MRG As Range

'聲明 變量MRG為單元格對象(這個變量可能裝一個單元格也可能裝一個單元格區域若幹單元格,甚至可能是若幹不相鄰的單元格。隻要是單元格這個變量都可以裝)

Set MRG = Range("D:D").Find("A",lookat:=xlPart)

'在D列查找"A",将第一個存儲“A”的單元格對象賦值給MRG,參數設定為單元格匹配,從D1之後開始查找(不含D1),理由見上方說明,此時MRG是工作表的某一個單元格了,而不再是其他的了,除非你再次進行賦值來改變

MsgBox MRG.Address

'返回單元值為“A”的單元格地址

Set mrg1 = Range("D:D").FindNext(MRG)

'在D列MRG這個單元格對象之後再次查找“A”

MsgBox mrg1.Address

'返回MRG之後單元值為“A”的單元格地址

End Sub

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved