2016-09-14 9 views
0

Итак, я работаю с этим файлом, в который я помещаю массу входных данных, и он меняет то, какие входы я помещаю внутри файла. После того, как я завершаю все входные данные, если категория на вкладках вывода по-прежнему пуста или субтитры для категории OPEN (Значение Я никогда не назначал раздел для этого субтитров, я хочу, чтобы он скрывал эту строку и делал это для нескольких выходные листыПопытка скрыть строки в Excel на основе определенных критериев, для нескольких листов

текущий код у меня есть:.

Sub Group_And_Hide() 
' 
' Group_And_Hide Macro 
' 

' 
'Define Variables 
    Dim myRange As Range 
    Dim rowCount As Integer, currentRow As Integer 
    Dim firstZeroValueRow As Integer, lastZeroValueRow As Integer 
    Dim CurrentRowValue As String 
    Dim neighborColumnValue1 As String 
    Dim NGV2 As String 
    Dim NGV3 As String 
    Dim NGV4 As String 
    Dim NGV5 As String 
    Dim CheckColumn As Integer 


'Select Balance Sheet 
Sheets("Balance Sheet").Select 
Application.ScreenUpdating = False 'Turns off screen uppdating while running 

'Establish the page range 
Set myRange = Range(D3, W126) 
rowCount = Cells(Rows.Count, myRange.Column).End(xlUp).Row 

'Reset the rows and Check 
firstZeroValueRow = 0 
lastZeroValueRow = 0 
CheckColumn = 9 

'Commands 
    For currentRow = 1 To rowCount 
     CurrentRowValue = Cells(currentRow, myRange.Column).Value 
     neighborColumnValue = Cells(currentRow, myRange.Column - 1).Value 

     If Cells(currentRow, CheckColumn).Value Like "**OPEN**" Then 
      'If First Cell is Open, and first blank row hasn't been assigned 
      If firstZeroValueRow = 0 Then 
       firstZeroValueRow = currentRow 
      End If 
     ElseIf Not Cells(currentRow, CheckColumn).Value Like "**OPEN**" Then 
      'if the cell is not Open and the row right values are 0, 
      'and firstBlankRow hasn't been assigned, then this is the  firstBlankRow 
      'to consider for grouping 
      If (Cells(currentRow, CheckColumn + 3).Value And Cells(currentRow, CheckColumn + 4).Value And Cells(currentRow, CheckColumn + 5).Value And Cells(currentRow, CheckColumn + 6).Value = 0) Then 

       firstZeroValueRow = currentRow 
      ElseIf Cells(currentRow, CheckColumn + 3).Value And Cells(currentRow, CheckColumn + 4).Value And Cells(currentRow, CheckColumn + 5).Value And Cells(currentRow, CheckColumn + 6).Value <> 0 And firstZeroValueRow <> 0 Then 
       'if firstBlankRow is assigned and this row has a value with a neighbor 
       'who isn't 0, then the cell one row above this one is to be considered 
       'the lastBlankRow to include in the grouping 
       lastZeroValueRow = currentRow - 1 
      End If 
     End If 

     'if first AND last blank rows have been assigned, then create a group 
     'then reset the first/lastBlankRow values to 0 and begin searching for next 
    'grouping 
    If firstZeroValueRow <> 0 And lastZeroValueRow <> 0 Then 
     Range(Cells(firstZeroValueRow, myRange.Column), Cells(lastZeroValueRow, myRange.Column)).EntireRow.Select 
     Selection.Group 
     firstZeroValueRow = 0 
     lastZeroValueRow = 0 
    End If 
Next 




ActiveSheet.Outline.ShowLevels RowLevels:=1 'Minimize all the groups 
Application.ScreenUpdating = True 'Turns on screen updating when done 


End Sub 

Поэтому в основном я надеюсь повторить этот код, выбрав следующий лист говорят «о прибылях и убытках»

То, что я надеюсь на результирующее код, который нужно сделать, - это взять файл, который выглядит так:

Assets: 
Current Assets 4000 50000 60000 
Fixed Assets  100  8000 500 
Liabilities: 
C. Liab.   -  -  - 
LT Liab.   -  -  - 
Equity: 
Capital Stock  4100 58000 60500 
**OPEN**   -  -  - 
Net Income  (300) (100) (500) 
RE    300  100 500 

И было бы в конечном итоге выглядит так:

Assets: 
Current Assets 4000 50000 60000 
Fixed Assets  100  8000 500 
Liabilities: 
Equity: 
Capital Stock  4100 58000 60500 
Net Income  (300) (100) (500) 
RE    300  100 500 

Поэтому мне нужно прятать нулевые значения (тире) не заготовок.

Ищет помощь с помощью этого кода.

+0

Вы просто хотите повторить сценарий выше для всех ваших листов? Или вам нужна помощь в сокрытии строк? Кроме того, я заметил, что вы группируете строки ... если в вашей группе есть «скрытая» строка, она станет «незакрытой», когда вы ее разваливаете/расширяете. Просьба уточнить – CRUTER

+0

Извините за путаницу. Чтобы прояснить, я не хочу на самом деле «Скрывать» строки за отзыв, но я хочу сгруппировать их и свернуть их, чтобы они были скрыты от представления, а затем да, я хочу, чтобы иметь возможность повторять этот скрипт для нескольких страниц. Благодаря! – BotBadger112233

ответ

0

Как комментирует CRUTER, группировка строк приведет к победе в целях спрятать строки. Любые скрытые строки будут показаны при открытии группы.

Если вы просто хотите скрыть строки на выходе и забыть о них, я бы рекомендовал просто повторять строки и скрывать каждый, соответствующий вашим критериям. Что-то вроде:

For RowIndex = 1 To LastRow 
    If (Not IsCategoryRow(RowIndex)) Then 
     If (IsRowEmpty(RowIndex)) Then 
      Rows(RowIndex).EntireRow.Hidden = True 
     End If 
    End If 
Next RowIndex 

Определение LastRow быть конец вашей продукции, и вставить свою собственную логику вместо IsCategoryRow и IsRowEmpty. Если ваш выходной формат согласован, вы можете, возможно, определить строку категории как угодно с символом «:» в конце (например, «Активы:», «Ответственность» и т. Д.) И просто перейти к следующей строке.