2016-09-07 4 views
1

Ich versuche ein Worksheet_Change() Ereignis zu erstellen, um Zeilen basierend auf dem numerischen Wert einer Zelle auszublenden.Zeilen auf Basis eines numerischen Werts in einer Zelle einblenden

Ich habe eine Tabelle B13: B513. Ich möchte eine Reihe von Zeilen anzeigen, die dem Wert in C7 entspricht. Wenn beispielsweise C7 = 10 ist, wird B13: B22 eingeblendet und der Rest wird weiterhin ausgeblendet.

Ich habe mehrere Möglichkeiten gesehen, etwas Ähnliches zu tun, aber "Fall" für jede Option zu verwenden. In meinem Fall habe ich 500 Optionen. Ich bin mir sicher, dass es einen effizienteren Weg gibt, dies zu tun.

Ich benutze Excel 2010.

Vielen Dank im Voraus!

Daniel

+0

ist C7 immer die Zelle mit der Anzahl der Zeilen, die Sie wollen, zu verbergen? Beginnt der Bereich versteckter Zeilen ab Zeile 13 ("B13")? –

+0

Sie sollten den Wert in C7 "isnumeric" überprüfen und dann den Bereich B13 auf den Wert in C7 "ändern" und die Eigenschaft 'sheared' von' shearrow' in False ändern. –

+0

@ongcaps haben Sie den Code in mu asnwer unten getestet? –

Antwort

0

Der folgende Code auf Worksheet_Change() Fall wird nur ausgeführt, wenn der Benutzer den Wert in der Zelle ändert „C7“, können Sie es leicht in dem Code ändern können (es wird auf der Linie commeneted).

sichtbar machen Der Code wil die angegebene Anzahl von Zeilen ab Zeile 13 (nach Bereich B13: B513)

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim WatchRange     As Range 
Dim IntersectRange    As Range 
Dim Numof_UnhideRows   As Long 
Dim UnhideRowStart    As Long 


' if you want to unhide the rows in Range(B13:B513) only when someone canges the vlues in C7 
Set WatchRange = Range("C7") 

' starting unhiding number of rows starting for row 13 
UnhideRowStart = 13 

Set IntersectRange = Intersect(Target, WatchRange) 

If Not IntersectRange Is Nothing Then 
    If IsNumeric(Target.Value) Then 
     Numof_UnhideRows = Target.Value 
     Rows(UnhideRowStart & ":" & UnhideRowStart + Numof_UnhideRows - 1).EntireRow.Hidden = False 

     MsgBox "Unhide a total of " & Numof_UnhideRows & " rows" 
    Else 
     MsgBox "Cell C7 doesn't contain a Numeric Value", vbCritical 
    End If 
Else 
    'Do Nothing Spectacular 

End If 

End Sub 
+1

Ich würde 'Range (" B13 ") verwenden. Resize (Target.Value) .EntireRow.Hidden = False'. Persönliche Präferenz obwohl. –

+0

@ DarrenBartrup-Cook fühle mich frei, meine Antwort zu aktualisieren, wenn es die Antwort verbessert –

+0

Ich würde nicht sagen, es verbessert - nur eine andere Möglichkeit, das gleiche Ergebnis zu erhalten. –

Verwandte Themen