2012-10-19 102 views
0

我正在編寫我的第一個宏,並對如何根據特定列中的值選擇特定行存在疑問。這裏是我到目前爲止的代碼:Excel宏:根據列日期選擇特定行

Sub Pipeline() 

'Module 3 
'Iterating through the Funding Date Column and looking for clients going live within 30 days 
'Selecting the rows for each client in that target range 
'TODO: Export information into an email template in Outlook 
'TODO: Send email to distribution list 


Dim fundingDate As range 
Set fundingDate = range("M4:M500") 

Dim todaysDate As Date 
todaysDate = Date 

For Each cell In fundingDate 
    If cell < todaysDate + 30 Then 
    'Need to select the entire row 
    Else 
    cell.Font.ColorIndex = 3 
End If 
Next 

End Sub 
+0

既然你說這是你的第一個宏,這裏有一個提示:總是使用'​​Option Explicit'(把它作爲你模塊的第一行)。這將迫使你聲明你的變量。 –

回答

3

cell.entirerow.select

UPDATE 這是一種更有效的方式來獲得你所需要的,不用所有循環替換'Need to select the entire row

在你的代碼替換For Each cell ...Next與此:

With fundingDate  
    .AutoFilter 1, "<" & todaysDate + 30   
    .SpecialCells(xlCellTypeVisible).Select 
    'here are your clients going live in next 30 days  
    .AutoFilterMode = False  
End With 

您可能需要提供一些錯誤的情況下,你沒有客戶在30天內上線(SpecialCells方法將在此檢查失敗)以及如果M4不是您的列標題,您可能需要調整範圍如何拾取可見單元格。

+0

嗨斯科特,.AutoFilter如何工作?我認爲點符號必須用於調用對象上的方法嗎?另外,當我複製並粘貼上面的代碼時,我收到一個錯誤,因爲.AutoFilterMode = False,上面寫着「運行時錯誤438,對象不支持這種方法或方法」 – BC00

+0

另外,我將如何指定我希望工作表只顯示一行(對於分組的行)?謝謝! – BC00

+0

@ BC00 - >現在我已經跑出了門,但爲了幫助您解決問題:'.AutoFilter如何工作? - 請參閱Excel中的幫助。或者在任何給定的範圍上手動使用Filter方法來查看它是如何工作的。 '。 notation' - >這在一個對象上調用一個方法。您正在調用'fundingDate'範圍對象的'AutoFilter'方法,它只是使用'With'語句來使代碼更易於閱讀並且更高效。 'RunTime Error' - >確保你有一個可以按日期過濾的有效範圍。在那裏玩得開心! –

相關問題