2016-09-14 1 views
0

So arbeite ich mit dieser Datei, die ich eine Menge Eingaben eingegeben habe, und es variiert, welche Eingaben ich innerhalb der Datei platziere. Nachdem ich alle Eingaben abgeschlossen habe, wenn eine Kategorie in den Ausgabe-Registerkarten noch leer ist oder der Untertitel für die Kategorie OPEN ist (Bedeutung Ich habe nie einen Abschnitt diesem Untertitel zugewiesen, ich möchte, dass es diese Zeile ausblenden und das für mehrere tun AusgabeblätterVersuchen, Zeilen in Excel nach bestimmten Kriterien für mehrere Blätter auszublenden

der aktuelle Code, den ich habe, ist:.

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 

Also im Grunde würde ich hoffen, dass Code zu wiederholen, indem Sie das nächste Blatt Auswahl sagen „Gewinn- und Verlustrechnung“

Was ich hoffe, für das sich ergeb Code zu tun ist, nehmen Sie eine Datei, die wie folgt aussieht:

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 

Und es würde am Ende wie folgt aussehen:

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 

Also muss ich die Null-Werte versteckt werden (die Striche) keine Leerzeichen.

Auf der Suche nach Hilfe mit diesem Code danke.

+0

Möchten Sie nur das obige Skript für alle Ihre Blätter wiederholen? Oder brauchst du Hilfe beim Verstecken von Zeilen? Außerdem habe ich gemerkt, dass Sie Zeilen gruppieren ... Wenn Sie eine "versteckte" Zeile in Ihrer Gruppe haben, wird diese beim Zusammenklappen/Expandieren wieder eingeblendet. Bitte klären Sie – CRUTER

+0

Sorry über die Verwirrung. Um das klarzustellen, möchte ich die Zeilen nicht wirklich "verstecken", sondern ich möchte sie gruppieren und sie ausblenden, damit sie nicht sichtbar sind, und dann möchte ich dieses Skript für mehrere Seiten wiederholen können. Vielen Dank! – BotBadger112233

Antwort

0

Wie CRUTER kommentierte, würde das Gruppieren der Zeilen den Zweck des Verbergens der Zeilen vereiteln. Alle versteckten Zeilen werden beim Öffnen der Gruppe angezeigt.

Wenn Sie nur die Zeilen auf der Ausgabe ausblenden und vergessen möchten, dann würde ich empfehlen, nur durch die Zeilen zu iterieren und jeden, der Ihren Kriterien entspricht, zu verstecken. Etwas wie:

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 definieren das Ende Ihrer Ausgabe zu sein, und geben Sie Ihre eigene Logik anstelle von IsCategoryRow und IsRowEmpty. Wenn Ihr Ausgabeformat konsistent ist, können Sie eine Kategoriezeile am Ende möglicherweise als Zeichen mit einem ":" definieren (z. B. "Assets:", "Liabilities:" usw.) und einfach zur nächsten Zeile springen.

Verwandte Themen