2015-10-28 4 views
0

Я не гений в Excel VBA, так вот мой вопрос:Excel VBA - Показать следующую ячейку, если предыдущая ячейка содержит текст

У меня есть лист Excel, который имеет скрытые строки.

Например: до тех пор, пока ячейка A1 пуста, держите строку (A2) скрытой. Когда A1 включает текст, отобразите следующую строку (A2).

Мой подход был следующим:

Sub showRows_Klicken() 

    Dim rng As Range 

     For Each rng In Range(Cells(1, 1), Cells(65536, 1).End(xlUp))  
       If LCase(rng) = "text"  
        Then            
         rng.EntireRow.Hidden = False 
       Else 

       End If 
     Next rng 

    End Sub 

Я надеюсь, что кто-то может помочь мне здесь.

Заранее благодарен.

ответ

0

Я пробовал этот код. Работал для меня. Попробуйте

Sub Macro1() 

    If Range("A1").Value = vbNullString Then 
     Columns("B:B").EntireColumn.Hidden = True 
    ElseIf Not IsEmpty(Range("A1").Value) Then 
     Columns("B:B").EntireColumn.Hidden = False 
    End If 

End Sub 
+0

Этот инструмент работал для того, чтобы скрыть столбец, мне нужно будет скрыть строку. –

+0

Просто замените «Колонки» на «Строка» в коде и замените B: B номером строки (например: 2: 2,) – Ishwarya

0

Свойство Hidden похоже работает. Я немного изменил функцию таким образом, чтобы она задавала следующую строку (i + 1), видимую на основе строки i. Теперь только проверяет каждую 2-ю строку, в противном случае вы можете скрыть все строки (если не было ничего), и вы не смогли бы установить любой «текст» такое, что следующая строку нескрываемая:

Sub showRows_Klicken() 
'loop all rows 
For i = 1 To 65536 Step 2 
    'check if has string "text" and set hidden 
    If LCase(Cells(i, 1)) = "text" Then 
     Range(Cells(i + 1, 1), Cells(i + 1, 1)).EntireRow.Hidden = False 
    Else 
     Range(Cells(i + 1, 1), Cells(i + 1, 1)).EntireRow.Hidden = True 
    End If 
Next i 
End Sub 
+0

По какой-то причине у меня была бесконечная петля с вашим кодом. Проблема решена. Благодаря! –

+0

Уверен, у вас бесконечный цикл, для меня это занимает много времени, так как это делается для строк 65536/2. – agold

+0

После того, как я нажал кнопку, это заняло минуту и ​​разбило мое заявление. Мне пришлось перезапустить все это. Может быть проблема с моей версией Excel. (2010) –

0

Спасибо за ваша помощь, я немного изменил код, и теперь это работает для меня:

  Sub Schaltfläche259_Klicken() 
      If Range("A1").Value = vbNullString Then 
       Rows("2").EntireRow.Hidden = True 
      ElseIf Not IsEmpty(Range("A1").Value) Then 
       Rows("2").EntireRow.Hidden = False 
      End If 

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