VBA 根據Find方法根據特定內容查找單元格


http://club.excelhome.net/thread-940744-1-1.html   

 

2. Find方法的語法
[語法]
<單元格區域>.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])
'__________________________________________________________________________________________________
<單元格區域>.Find (要查找的數據,開始查找的位置,查找的范圍類型,完全匹配還是部分匹配,行列方式查找,向前向后查找,區分大小寫,全角或半角,查找格式)

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

 

案例:根據工作表名稱查找標題欄中的對應標題的單元格

源表:

 

VBA語句:

 

Option Explicit
Option Compare Text
Sub 根據內容查找單元格()
    Dim sSheet As Worksheet
    Dim eachSheet As Worksheet
    Dim findRange As Range
    Dim columnCount As Integer
    
    Set sSheet = Worksheets("數據")
    '獲取工作表總列數
    columnCount = sSheet.UsedRange.Cells.EntireColumn.Count
    
    For Each eachSheet In Worksheets
        '只查找A1單元格所在的整行
        Set findRange = sSheet.Range("A1").EntireRow.Find(eachSheet.Name, , , xlWhole)
        Debug.Print findRange.Column
    Next eachSheet
   
End Sub

 

改進版:

Option Explicit
Option Compare Text
Sub 根據內容查找單元格()
    Dim sSheet As Worksheet
    Dim eachSheet As Worksheet
    Dim findRange As Range
    Dim columnCount As Integer
    
    Set sSheet = Worksheets("Sheet2")
    '獲取工作表總列數
    columnCount = sSheet.UsedRange.Cells.EntireColumn.Count
    
    For Each eachSheet In Worksheets
        '只查找A1單元格所在的整行
        Set findRange = sSheet.Range("A1").EntireRow.Find(eachSheet.Name, , , xlWhole)
        '可能找不到符合的單元格,因此使用前先判斷下
 If Not findRange Is Nothing Then Debug.Print findRange.Column End If
    Next eachSheet
   
End Sub

 

如果可能存在沒有找到的情況,如果直接使用它,沒有找到就會導致程序報錯,不過可以利用報錯來終止程序運行,相當於拋出運行時異常,提示用戶需要檢查錯誤,也是一種策略,所以使用時根據需要綜合考慮上面2種方案吧


運行后:

 

https://www.cnblogs.com/xpvincent/p/7424694.html  VBA中FIND方法的使用說明,不錯的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM