返回列表 上一主題 發帖

利用Find找日期,出現錯誤!!

本帖最後由 stillfish00 於 2018-8-3 10:49 編輯

回復 19# hugh0620
沒這回事,19# 檔案還是會出現錯誤。
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 hugh0620 於 2018-8-3 15:22 編輯
G欄資料格式是自訂而非日期,Find時會當成字串來比,但你傳入Find的ST是Date,所以找不到 ...
stillfish00 發表於 2018-8-3 10:38


        
應該不是這個問題,如果是這個問題,我應該要去調整D欄位的格式,但我並沒有這樣子處理,
僅是在程式碼上做修正而已。

如果有比較好的處理方式,我都有提供檔案,可以進行修改及測試。
  
還是比較想了解,哪個環節出了錯誤!!
學習才能提升自己

TOP

回復  hugh0620
沒這回事,19# 檔案還是會出現錯誤。
stillfish00 發表於 2018-8-3 10:39


   
      測試結果.gif
     
     修正後,檔案是可以被正常執行!!
     不了解,檔案還是會出現錯誤??
     是否可以截圖或是上傳GIF檔看一下!!
學習才能提升自己

TOP

回復 23# hugh0620
我知道為啥結果不一樣了。
你可以試試先按Ctrl+F,你能跑是因為你目前的選項是在搜尋'公式' ,我的是在搜尋'內容'所以執行時有Error

Find 的參數有很多是Optional,但是當你沒指定這些參數時,他會以上次使用的值作為預設值。
這裡的上次包含使用者有用到Ctrl+F搜尋時選擇的選項。

所以,用Find的話最好還是明確指定這些參數。
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復  hugh0620
我知道為啥結果不一樣了。
你可以試試先按Ctrl+F,你能跑是因為你目前的選項是在搜尋'公 ...
stillfish00 發表於 2018-8-3 23:09



         Ctrl+F的方式,在遇到問題的時候,也有試著用過這樣的方式,
        也有寫設定LookIn:=xlValues,但也測試過,不行!!
        
         有沒有一個Find跟Format的相關參數上的說明跟範例,
         能更方便了解如何使用!!
         (不熟悉規範及使用方式,應用上,就會很卡!! 也需要這方面的求助跟指導)
學習才能提升自己

TOP

本帖最後由 stillfish00 於 2018-8-6 18:20 編輯

回復 25# hugh0620
Find 參數說明 : https://msdn.microsoft.com/zh-tw ... e-find-method-excel

自己簡單試幾種寫法, 除了第二種會Fail如同之前講的,其他都能成功吧。
  1. Sub TestCases()
  2.     Dim ST As Date
  3.     Dim ED As Date
  4.     ST = 工作表7.Range("W3")
  5.     ED = 工作表7.Range("X3")
  6.     With 工作表7
  7.         Set A = .Range("G3:G10000").Find(What:=ST, After:=.[G3], LookIn:=xlFormulas, LookAt:=xlWhole)
  8.         If Not A Is Nothing Then Debug.Print "#1", A.Row Else Debug.Print "#1", "Find Fail"
  9.         Set A = .Range("G3:G10000").Find(What:=ST, After:=.[G3], LookIn:=xlValues, LookAt:=xlWhole)
  10.         If Not A Is Nothing Then Debug.Print "#2", A.Row Else Debug.Print "#2", "Find Fail"
  11.         Set A = .Range("G3:G10000").Find(What:=Format(ST, "yyyy/mm/dd"), After:=.[G3], LookIn:=xlValues, LookAt:=xlWhole)
  12.         If Not A Is Nothing Then Debug.Print "#3", A.Row Else Debug.Print "#3", "Find Fail"
  13.         Set A = .Range("G3:G10000").Find(What:=.Range("W3").Text, After:=.[G3], LookIn:=xlValues, LookAt:=xlWhole)
  14.         If Not A Is Nothing Then Debug.Print "#4", A.Row Else Debug.Print "#4", "Find Fail"
  15.     End With
  16. End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 25# hugh0620
這裡有一篇不知是否有幫助?
https://excelmacromastery.com/excel-vba-find/#Using_SearchFormatwith_Find
請看:Using SearchFormat with Find 篇及其範例
其中有一句:
Application.FindFormat.Clear
可清除前次設定的 Find Format

TOP

本帖最後由 GBKEE 於 2018-8-7 07:47 編輯

回復 25# hugh0620

Range.Find 方法
說明中的 l 備註
如果沒有找到符合的儲存格,則此方法會傳回 Nothing。Find 方法不會影響選取範圍或作用儲存格。
每次使用此方法時,都會儲存 LookIn、LookAt、SearchOrder 及 MatchByte 的設定如果下次呼叫此方法時不指定這些引數的值,便會使用儲存值。如果設定這些引數,將會變更 [尋找] 對話方塊中的設定,而修改 [尋找] 對話方塊中的設定,則會變更省略這些引數時所使用的儲存值。若要避免發生問題,每次使用此方法時,請明確設定這些引數。您可以使用 FindNext 及 FindPrevious 方法,重複進行搜尋。

修改19#檔案的程式
  1. Private Sub CommandButton1_Click()
  2. Dim ST As Date
  3. Dim ED As Date
  4. Dim a As Range
  5. ST = 工作表7.Range("W3")
  6. ED = 工作表7.Range("X3")
  7. Set a = 工作表7.Range("G3:G10000").Find(ST, LookIn:=xlValues)
  8. MsgBox a Is Nothing  &"  找不到 " & ST
  9. 'Find 尋找日期, 資訊的類型,為公式.
  10. Set a = 工作表7.Range("G3:G10000").Find(ST, LookIn:=xlFormulas)
  11. MsgBox a Is Nothing &"  找到 " & ST
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

假設第一次開啟EXCEL後,並未執行任何的搜尋動作,
只進行這檔案的FIND, 而有時可, 有時不可(確定尋找值是存在的),
則應不是搜尋條件參數的問題了~~

TOP

若用FIND一直有困擾, 可改用MATCH函數
Dim ST&
ST = Range("W3")
A = Application.Match(ST, [G:G], 0)
If IsError(A) Then MsgBox "找不到 W3 的日期!!!": Exit Sub
MsgBox A

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題