Dim rng As Range
For Each rng In Range("D2:D100")
' MsgBox Right(rng, 5)
If Right(rng, 5) < today Then
'刪除線& 綠字體
With Cells(rng, "D").Font
.Strikethrough = True
.Color = 32768
End With
End If
Next
'大致情況是
D欄內有日期,內存起始日~終止日
如:12/01-12/13
我想做的是當後方終止日已過期時,能讓程序自動將其補入刪除線
但我想用for each in... next來試試
唯我沒用過這寫法..有點搞不懂..
上方程序好像也怪怪的..
因少了用迴圈的方式去跑每一個格子...
Q1:那我要怎麼寫才能讓程序判斷到該格後五碼的日期 < 今天時,
可以讓該格自動劃入刪除線呢?因為少了迴圈,所以我不知道要怎麼做cells(row,"D")的選取,或如何去令其對該過期的格子下命令....?????

==================================
原先我改用 for next
一格一格去跑,這寫法大致如下:
today= month(date) & "/" & day(date)
for ii = 2 to cells(row.count,"D").end(xlup).row
Cells(ii, "D").Select '這裡不加入,只會對初選格做劃入刪除線...但加入感覺程序執行時間變長了
If Right(selection, 5) < today Then
'刪除線& 綠字體
With Selection.Font
.Strikethrough = True
.Color = 32768
End With
End If
Next
補註:一格格去跑若我未加入cells(ii,"D").select時
就不會在當格內值過期時劃入刪除線..
可是加入該列又覺得好像挺費時且沒效率
所以才想試試用for each in next來試試
Q2:不知道若用each...這方法會不會比逐一去判斷來得快?
Q3:若採用原方法for next,那我要怎麼不用cells(ii,"D").select 來直接令其劃入刪除線在正確的儲存格內呢?
以上...萬分感謝..祝各位發大財行大運
===============
OK,我剛又不小心自個解決了Q1
我用application.goto的方法..
不過還是想知道除了用.select,或goto等..
有沒有方法可以在不做選取該格(或不跑到該格)的情況下,直接對範圍內符合條件的格子下命令?
感覺若可以應該會更省時才是..
以上謝謝諸位.