Board logo

標題: [發問] 請教關於這段代碼的疑惑? [打印本頁]

作者: sunnyso    時間: 2014-3-7 21:38     標題: 請教關於這段代碼的疑惑?

這個sub過程的意思是將sheet4儲存格a1到a500的所有包含2的儲存格替換為儲存格的值為5,我的疑惑主要是在do...while 這個語法塊中,假設找到了第一個包含2的儲存格,那麼就進入do...while 過程 這樣的話 c的值被替換為5 使用set c=.findnext(c)的話 這樣不就變成了找5了嗎?? 而不是找2了??但是為什麼程式執行的結果是正確的??而不是在找到第一個是2的儲存格後,將儲存格的值替換為5,然後再繼續找5呢??麻煩對VBA語法熟悉的指教一下不甚感激!
  1. Sub t1()
  2.   Dim c As Range
  3.   Dim firstaddress As String
  4. With Worksheets("Sheet4").Range("a1:a500")
  5.     Set c = .Find(2, LookIn:=xlValues)
  6.     If Not c Is Nothing Then
  7.         firstaddress = c.Address
  8.         Do
  9.             c.Value = 5
  10.             Set c = .FindNext(c)
  11.         Loop While Not c Is Nothing And c.Address <> firstaddress
  12.     End If
  13. End With
  14. End Sub
複製代碼

作者: Hsieh    時間: 2014-3-7 23:33

回復 1# sunnyso
Range.FindNext 方法
用 Find 方法開始進行尋找後,用本方法繼續該尋找作業。本方法尋找相符合同一條件的下儲存格,並傳回代表該儲存格的 Range 物件。本方法不影響選定範圍或目前儲存格。
你可先用功能表中的尋找先輸入一個搜尋
然後關閉尋找對話方塊
然後再重新啟動尋找,看看他的尋找目標是否預設成上一次尋找目標
作者: sunnyso    時間: 2014-3-7 23:40

感謝提示, 讓我試試




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)