2016-09-13 3 views
0

У меня есть последовательность кода, где, если C37 пуст, я хочу, чтобы две серии строк были скрыты. Код, который я успешно работаю для этого.Если инструкция скрыть/показать строки в Excel VBA

Однако

Если D37 не является пустым, я хотел бы той же серии строк, чтобы быть нескрываемым.

'Show/Hide Filter Index Columns 

If Worksheets("Req Sheet").Range("C37").Value = "" Then 
    Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True 
    Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True 
Else 
    Rows("54:57").EntireRow.Hidden = False 
    Rows("125:128").EntireRow.Hidden = False 

End If 

If Worksheets("Req Sheet").Range("C38").Value = "" Then 
    Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True 
    Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True 
Else 
    Rows("54:57").EntireRow.Hidden = False 
    Rows("125:128").EntireRow.Hidden = False 

End If 

Я знаю, что синтаксис кода неправильно, но проблема я получаю то, что вторая часть кода из С38 вытеснит код из от C37.

Я попытался использовать и оператора, но я не смог добиться успеха!

Благодарим за помощь!

+0

Вы хотите скрыть строки, если оба C37 и C38 пустые? – gizlmo

+0

Вы хотите протестировать 'D37' как в своем посте? или 'C38' в вашем коде? –

ответ

1
With Worksheets("Req Sheet") 

    If .Range("C37").Value <> "" Or .Range("C38").Value <> "" Then 
     Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = False 
     Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = False 
    Else 
     Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True 
     Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True 

     Rows("54:57").EntireRow.Hidden = False 
     Rows("125:128").EntireRow.Hidden = False 
    End If 

End With 
+0

Привет! Это теперь работает, если C37 имеет данные, но если C38 имеет данные, а C37 пуст, строки все еще скрыты! – vividillusion

+2

Это то, что вы хотите? Заметка; 'Строки (" 54:57 ")' и 'Строки (" 125: 128 ")' никогда не будут скрыты. –

0

Этот код скроет строки, если C37 пуст, а D37 - данные.
Он отобразит строки, если C37 имеет данные, а D37 пуст.
Любое другое условие отобразит строки.

Sub Test() 

    Dim rng As Range 

    With ThisWorkbook 
     Set rng = Union(.Worksheets("Formulation").Rows("54:57"), _ 
         .Worksheets("Formulation").Rows("128:128")) 

     With .Worksheets("Req Sheet") 
      rng.EntireRow.Hidden = (.Range("C37") <> "" And .Range("D37") = "") 
     End With 

    End With 

End Sub 
+0

Hi, Используя этот код, он работает правильно для D37, но если C37 имеет данные, он скрыт. Кроме того, если оба они пусты, они должны быть скрыты, но строки видны! – vividillusion

+0

Да, у вас проблемы с пониманием вашего запроса: _C37 пуст, я хочу, чтобы две серии строк были скрыты, D37 не пуст. Я хотел бы, чтобы одна и та же серия строк была незакрытой. Это означает, что если C37 или D37 пуст, вы хотите, чтобы ряд строк был скрыт (если D37 не пуст, он не скрыт, поэтому, если он пуст, он скрыт). Перед тем, как сделать код, вы говорите C37 и D37, но после вашего кода это C37 и C38 ... очень запутанно. –

Смежные вопросы