tft每日頭條

 > 圖文

 > excel vba在區域内查找空白行

excel vba在區域内查找空白行

圖文 更新时间:2024-07-20 01:15:08

我們緻力于為大家奉獻最有效的經驗,讓大家能夠解決掉問題,但是大家也都知道,每個人遇到的情況都是不一樣的,大家在看經驗的同時,除了跟随操作,也需要自己的思考,舉一反三的解決問題,這樣才會變得更加有内涵,一起成長為一樣的經驗達人。根據二八定律,學好這excel VBA,就能完成80%的工作。

excel vba在區域内查找空白行(ExcelVBA常用技巧之Find方法查找目标單元格區域)1

在Excel中使用查找對話框可以查找工作表中特定内容的單元格,而在VBA中則使用Find方法,如下面的代碼所示。

#001 Sub RngFind()

#002 Dim StrFind As String

#003 Dim Rng As Range

#004 StrFind = InputBox("請輸入要查找的值:")

#005 If Trim(StrFind) <> "" Then

#006 With Sheet1.Range("A:A")

#007 Set Rng = .Find(What:=StrFind, _

#008 After:=.Cells(.Cells.Count), _

#009 LookIn:=xlValues, _

#010 LookAt:=xlWhole, _

#011 SearchOrder:=xlByRows, _

#012 SearchDirection:=xlNext, _

#013 MatchCase:=False)

#014 If Not Rng Is Nothing Then

#015 Application.Goto Rng, True

#016 Else

#017 MsgBox "沒有找到該單元格!"

#018 End If

#019 End With

#020 End If

#021 End Sub

代碼解析:

RngFind過程使用Find方法在工作表Sheet1的A列中查找InputBox函數對話框中所輸入的值,并查找該值所在的第一個單元格。

第6到第13行代碼在工作表Sheet1的A列中查找InputBox函數對話框中所輸入的值。應用于Range對象的Find方法在區域中查找特定信息,并返回Range對象,該對象代表用于查找信息的第一個單元格。如果未發現匹配單元格,就返回Nothing,語法如下:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)

參數expression是必需的,該表達式返回一個Range對象。

參數What是必需的,要搜索的數據,可為字符串或任意數據類型。

參數After是可選的,表示搜索過程将從其之後開始進行的單元格,必須是區域中的單個單元格。查找時是從該單元格之後開始的,直到本方法繞回到指定的單元格時,才對其進行搜索。如果未指定本參數,搜索将從區域的左上角單元格之後開始。

在本例中将After參數設置為A列的最後一個單元格,所以查找時從A1單元格開始搜索。

參數LookIn是可選的,信息類型。

參數LookAt是可選的,可為XlLookAt常量的xlWhole 或xlPart之一。

參數SearchOrder是可選的,可為XlSearchOrder常量的xlByRows或xlByColumns之一。

參數SearchDirection是可選的,搜索的方向,可為XlSearchDirection常量的xlNext或xlPrevious之一。

參數MatchCase是可選的,若為True,則進行區分大小寫的查找。默認值為False。

參數MatchByte是可選的,僅在選擇或安裝了雙字節語言支持時使用。若為True,則雙字節字符僅匹配雙字節字符。若為False,則雙字節字符可匹配其等價的單字節字符。

參數SerchFormat是可選的,搜索的格式。

每次使用Find方法後,參數LookIn、LookAt、SearchOrder 和MatchByte的設置将保存。如果下次調用Find方法時不指定這些參數的值,就使用保存的值。因此每次使用該方法時請明确設置這些參數。

如果工作表的A列中存在重複的數值,那麼需要使用FindNext方法或FindPrevious方法進行重複搜索,如下面的代碼所示。

#001 Sub RngFindNext()

#002 Dim StrFind As String

#003 Dim Rng As Range

#004 Dim FindAddress As String

#005 StrFind = InputBox("請輸入要查找的值:")

#006 If Trim(StrFind) <> "" Then

#007 With Sheet1.Range("A:A")

#008 Set Rng = .Find(What:=StrFind, _

#009 After:=.Cells(.Cells.Count), _

#010 LookIn:=xlValues, _

#011 LookAt:=xlWhole, _

#012 SearchOrder:=xlByRows, _

#013 SearchDirection:=xlNext, _

#014 MatchCase:=False)

#015 If Not Rng Is Nothing Then

#016 FindAddress = Rng.Address

#017 Do

#018 Rng.Interior.ColorIndex = 6

#019 Set Rng = .FindNext(Rng)

#020 Loop While Not Rng Is Nothing And Rng.Address <> FindAddress

#021 End If

#022 End With

#023 End If

#024 End Sub

代碼解析:

RngFindNext過程在工作表Sheet1的A列中查找InputBox函數對話框中所輸入的值,并将查到單元格底色設置成黃色。

第8行到第17行代碼使用Find方法在工作表Sheet1的A列中查找。

第16行代碼将查找到的第一個單元格地址賦給字符串變量FindAddress。

第18行代碼将查找到的單元格底色設置成黃色。

第19行代碼使用FindNext方法進行重複搜索。FindNext方法繼續執行用Find方法啟動的搜索。查找下一個匹配相同條件的單元格并返回代表單元格的Range對象,語法如下:

expression.FindNext(After)

參數expression是必需的,返回一個Range對象。

參數After是可選的,指定一個單元格,查找将從該單元格之後開始。

第20行代碼如果查找到的單元格地址等于字符串變量FindAddress所記錄的地址,說明A列已搜索完畢,結束查找過程。

運行RngFindNext過程,在InputBox函數輸入框中輸入“196.01”後結果如圖 5‑1所示

excel vba在區域内查找空白行(ExcelVBA常用技巧之Find方法查找目标單元格區域)2

圖 5‑1 使用FindNext方法重複搜索

還可以使用FindPrevious方法進行重複搜索,FindPrevious方法的語法如下:

expression.FindPrevious(After)

FindPrevious方法和FindNext方法唯一的區别是FindPrevious方法查找匹配相同條件的前一個單元格而FindNext方法是查找匹配相同條件的下一個單元格。

如果你在工作中還需要設計其他的表格模闆,都可以留言,我們會根據大家需求來整理相關的學習資料,目的隻有一個,那就是學好Excel,提高工作效率!

,

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

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

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