2015-04-01 51 views
0

我已經編寫代碼來選擇特定工作表,並在按鈕上單擊電子郵件發送所有選定工作表的數據。現在在一張表格中,在下拉列表中應用了條件格式。有條件格式化,只選擇可見單元格

因此,要求是當下拉選項1被選中,然後低於兩個單元格不可見。其次,當選擇下拉選項2時,所有單元格都可見。

隨着我的代碼一切都被選中。

我試過這段代碼:

overallrange = ActiveSheet.Range("C1:D50").SpecialCells(xlCellTypeVisible).Select 

有人可以建議更好的方法來做到這一點....

+4

讓我們回到第一步。爲什麼你需要選擇任何單元格開始?在大多數使用VBA和Excel的應用程序中,絕對沒有理由選擇任何東西(並且經常會讓你的生活更加複雜)。試着解釋你實際上想要對你選擇的細胞做什麼,並且可能有更好的方法。 – psubsee2003 2015-04-01 13:12:34

+0

實際情況是我正在爲管理者構建一個宏。他們將填寫項目要求,包含數據的選定工作表將一次通過電子郵件發送給解決方案團隊。 – 2015-04-01 13:29:10

+0

指定你打算做的事情。將格式應用於所有內容可能會更好,並且在條件格式的* Formula1 *屬性中具有隱藏條件。這樣,如果數據發生變化,指令集將在沒有運行任何宏的情況下再次觸發。如果你希望你的顏色保持靜態,直到下一個宏運行或手動改變,你可以運行一系列指令,沿着「For Each rng In ActiveSheet.Range(」C1:D50「)。SpecialCells(xlCellTypeVisible )」。你的方式仍然是對的,但它對我們來說看起來是錯誤的。 – user3819867 2015-04-02 21:18:23

回答

-1

你領導的正確方法,請參見下面我sniplet:

Sub ert() 

Dim rng As Range 
For Each rng In ActiveSheet.Range("C1:D50").SpecialCells(xlCellTypeVisible) 
    rng.Select 
    With Selection 
     .FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" 'replace with your formula 
     .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
     .FormatConditions(1).StopIfTrue = False 
     .FormatConditions(1).Interior.Color = 49407 'give it a touch of orange 
    End With 
Next 

End Sub 

PS沒有人告訴他,愛上四月一號。明天會回來。
編輯,回來更多的熱量:讓我突出。選擇方法模擬你選擇範圍然後選擇。指的是範圍的選擇。該選擇代碼中的廢物資源,並可能導致錯誤(例如,一些不能選擇這樣宏暫停,一個SelectionChange事件觸發等),並期待糟糕。由於上述原因(尤其是糟糕),您不會選擇,您只需定義範圍,然後針對給定範圍運行腳本。這樣,您可以在看起來很酷時節省運行時間。下面的snipplet是你的sub-sub的很酷的變體。

Sub ert() 
    With ActiveSheet.Range("C1:D50").SpecialCells(xlCellTypeVisible) 
     .FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" 'replace with your formula 
     .FormatConditions(.FormatConditions.Count).SetFirstPriority 
     .FormatConditions(1).StopIfTrue = False 
     .FormatConditions(1).Interior.Color = 49407 'give it a touch of orange 
    End With 
End Sub 
相關問題