返回列表 上一主題 發帖

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

回復 17# hugh0620
G欄資料格式是自訂而非日期,Find時會當成字串來比,但你傳入Find的ST是Date,所以找不到。
要嘛傳入ST前再format轉成字串
要嘛G欄格式都改日期
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

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

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

TOP

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

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

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

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

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題