2015-04-01 94 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 
相关问题