2015-04-01 5 views
0

Я написали код, чтобы выбрать конкретные листы, и на кнопке щелкните по электронной почте данные всех выбранных листов. Теперь в одном листе условное форматирование применяется к выпадающему списку.Условное форматирование, выбор только видимых ячеек

Так что, когда выбрана опция выпадающего меню 1, то ниже двух ячеек не видно. Во-вторых, если выбрана опция выбора 2, все ячейки видны.

С моим кодом все выбирается.

Я попробовал этот код:

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

Может кто-то советы лучших способов сделать это ....

+4

Вернемся к шагу. Зачем вам нужно выбирать какие-либо ячейки для начала? В большинстве приложений, использующих VBA и Excel, нет абсолютно никаких оснований выбирать что-либо (и часто усложняет жизнь). Попробуйте объяснить, что вы на самом деле пытаетесь сделать с ячейками, которые вы выбираете, и может быть лучший способ. – psubsee2003

+0

Фактический сценарий: я создаю макрос для менеджеров. Они будут заполнять требования к проекту, и выбранные листы, содержащие данные, будут отправлены по электронной почте в группу решений. –

+0

Укажите, что вы намереваетесь сделать. Лучше всего применить форматирование ко всему и иметь критерии скрытности в свойстве * Formula1 * условного форматирования. Таким образом, если данные будут изменяться, набор инструкций снова загорится без запуска макроса. Если вы хотите, чтобы ваши цвета оставались статичными до тех пор, пока следующий макрос не будет запущен или не будет изменен вручную, вы можете запустить набор инструкций с чем-то в строках «Для каждого rng ​​в ActiveSheet.Range (« C1: D50 »). SpecialCells (xlCellTypeVisible)». Вы все еще можете быть в порядке со своими путями, но это выглядит неправильно. – user3819867

ответ

-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 Никто не сказал ему, должен любить 1 апреля. Вернется завтра.
Редактировать, назад с большим количеством тепла: позвольте мне выделить . Выберите метод, который эмулирует вас, выбрав диапазон, затем Выбор. относится к диапазон выбран. Выберите в коде отходов ресурсов и может привести к ошибкам (например, то, что не могут быть выбраны таким образом, макро привалы, событие SelectionChange триггеры и т.д.) и выглядит паршивый. По вышеуказанным причинам (esp. Lousiness) вы не выбираете, вы просто определяете диапазон и затем запускаете скрипт для заданного диапазона. Таким образом, вы можете сэкономить секунды времени работы, когда будете выглядеть круто. Сниппл ниже - это крутое изменение вашего суб-суб.

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 
Смежные вопросы