2016-12-04 2 views
-3

Tim Williams schrieb dieses ausgezeichnete Skript zum Anzeigen und Ausblenden von Zeilen, abhängig vom Namen der Schaltfläche. Wenn ich also einen Button wie "btn_5_3_H" benenne, werden die Zeilen 5,6,7 ausgeblendet.Ausblenden von Spalten basierend auf dem Namen der Schaltfläche

Meine Frage ist, wie kann ich dieses Skript arbeiten, um Spalten zu verstecken? Offenbar funktionieren Spalten nicht mit Zahlen, sondern mit Buchstaben und irgendwie akzeptiert Skript keine Eingabe wie "btn_E_3_H".

Sub ShowHideRows() 

    Dim arr 

    'split the calling button name into an array 
    ' (array will be zero-based) 
    arr = Split(Application.Caller, "_") 

    '**EDIT** check array is expected size... 
    If UBound(arr) <> 3 Then Exit Sub 

    If IsNumeric(arr(1)) and IsNumeric(arr(2)) Then 
     With Me 'if the code is in the sheet module, else "ActiveSheet" 
      .Unprotect Password:="abc" 

      'arr(1) determines start row 
      'arr(2) determines # of rows 
      'arr(3) determines if rows are hidden or not 
      .Cells(arr(1), 1).Resize(arr(2), 1).EntireRow.Hidden = (arr(3) = "H") 
      .Protect Password:="abc" 
     End With 
    End If 
End Sub 

Vielen Dank für Ihre Kommentare

Antwort

0

nicht sicher, wo man den Eindruck, dass .Cells() nicht mit numerischen Werten funktioniert - das ist nicht das Problem. Das Problem ist, dass Sie tun Buchstaben verwenden, können Sie sie nicht mit IsNumeric testen und erwarten, dass sie funktionieren. Dies funktioniert mit dem Buchstaben Identifikatoren:

Sub ShowHideColumns() 
    Dim arr() As String 
    arr = Split(Application.Caller, "_") 
    If UBound(arr) <> 3 Then Exit Sub 
    With Me 'if the code is in the sheet module, else "ActiveSheet" 
     .Unprotect Password:="abc" 
     .Cells(1, arr(1)).Resize(1, arr(2)).EntireColumn.Hidden = (arr(3) = "H") 
     .Protect Password:="abc" 
    End With 
End Sub 
+0

Ehrfürchtig Vielen Dank – Dennis

Verwandte Themen