Um truque interessante é impedir os usuários de filtrarem os seus dados, e neste caso pode ser que até mesmo os ajude a ser mais acertivos, por se esconder as setas de filtragem da planilha.
  Podemos definir AutoFiltros dentro de uma pasta de trabalho do MS Excel. 
  Segue-se um bom exemplo abaixo:
    Escondendo as setas do AutoFiltro
  Talvez você queira que os usuários filtrem apenas uma das colunas da tabela. O código a seguir esconde as setas para todas as colunas, exceto a coluna 2.  
  Sub HideArrows() 
'hides all arrows except column 2  
Dim c As Range 
  Dim i As Integer 
  i = Cells(1, 1).End(xlToRight).Column 
  Application.ScreenUpdating = False 
  
  For Each c In Range(Cells(1, 1), Cells(1, i))
   If c.Column <> 2 Then 
    c.AutoFilter Field:=c.Column, _ 
      Visibledropdown:=False 
   End If 
Next 
  
  Application.ScreenUpdating = True 
  End Sub 
  
  
  Em outros casos, podemos querer ocultar as setas em colunas específicas, e deixar todas as outras visíveis. O procedimento a seguir esconde as setas para colunas 1, 3 e 4.  
    Sub HideSpecifiedArrows()
  'hides arrows in specified columns
  
  Dim c As Range
  Dim i As Integer
    
  Let i = Cells(1, 1).End(xlToRight).Column
  
  Let Application.ScreenUpdating = False
  
    For Each c In Range(Cells(1, 1), Cells(1, i))
      Select Case c.Column
  
      Case 1, 3, 4
          c.AutoFilter Field:=c.Column, _
  
            Visibledropdown:=False
      Case Else
  
          c.AutoFilter Field:=c.Column, _
            Visibledropdown:=True  
      End Select
  Next
    
  Let Application.ScreenUpdating = True
  
  End Sub
  Para mostrar todas as setas, você pode usar o seguinte código:
  
  Sub ShowArrows()
  Dim c As Range
  
Dim i As Integer  
i = Cells(1, 1).End(xlToRight).Column  
Application.ScreenUpdating = False  
For Each c In Range(Cells(1, 1), Cells(1, i))  
c.AutoFilter Field:=c.Column, _  
  Visibledropdown:=True  
Next  
Application.ScreenUpdating = True  
End Sub  
  Se a tabela não começar na célula A1, poderá especificar o intervalo da posição, e esconder as setas nas células específicas desse intervalo.  
  Sub HideArrowsRange()  'hides arrows in specified rangeDim c As RangeDim i As IntegerDim rng As RangeSet rng = Range("D14:J14")i = rng.Cells(1, 1).Column - 1Application.ScreenUpdating = False  
For Each c In Range("D14:J14")    Select Case c.Address    Case "$E$14", "$G$14", "$J$14"        c.AutoFilter Field:=c.Column - i, _            Visibledropdown:=False    Case Else        c.AutoFilter Field:=c.Column - i, _          Visibledropdown:=True    End SelectNext
  Application.ScreenUpdating = TrueEnd Sub
  Caso a tabela não comece na célula A1, podemos especificar o intervalo da posição, mostrando todas as setas desse intervalo.  
  Sub ShowArrowsRange()  
  'shows arrows in specified range
  Dim c As Range
  
Dim i As Integer  
Dim rng As Range  
Set rng = Range("D14:J14")  
i = rng.Cells(1, 1).Column - 1  
Application.ScreenUpdating = False  
For Each c In Range("D14:J14")  
    c.AutoFilter Field:=c.Column - i, _  
      Visibledropdown:=True  
Next  
Application.ScreenUpdating = True  
  End Sub
Escondendo as setas do AutoFiltro
Talvez você queira que os usuários filtrem apenas uma das colunas da tabela. O código a seguir esconde as setas para todas as colunas, exceto a coluna 2.
  Sub HideArrows()
'hides all arrows except column 2
Dim c As Range
Dim i As Integer
i = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(1, i))
If c.Column <> 2 Then
c.AutoFilter Field:=c.Column, _
Visibledropdown:=False
End If
Next
Application.ScreenUpdating = True
End Sub
  Em outros casos, podemos querer ocultar as setas em colunas específicas, e deixar todas as outras visíveis. O procedimento a seguir esconde as setas para colunas 1, 3 e 4.
  Sub HideSpecifiedArrows()
'hides arrows in specified columns
Dim c As Range
Dim i As Integer
Let i = Cells(1, 1).End(xlToRight).Column
Let Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(1, i))
Select Case c.Column
Case 1, 3, 4
c.AutoFilter Field:=c.Column, _
Visibledropdown:=False
Case Else
c.AutoFilter Field:=c.Column, _
Visibledropdown:=True
End Select
Next
Let Application.ScreenUpdating = True
End Sub
Para mostrar todas as setas, você pode usar o seguinte código:
Sub ShowArrows()
Dim c As Range
Dim i As Integer
i = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(1, i))
c.AutoFilter Field:=c.Column, _
Visibledropdown:=True
Next
Application.ScreenUpdating = True
End Sub
Se a tabela não começar na célula A1, poderá especificar o intervalo da posição, e esconder as setas nas células específicas desse intervalo.
  Sub HideArrowsRange()'hides arrows in specified rangeDim c As RangeDim i As IntegerDim rng As RangeSet rng = Range("D14:J14")i = rng.Cells(1, 1).Column - 1Application.ScreenUpdating = FalseFor Each c In Range("D14:J14")Select Case c.AddressCase "$E$14", "$G$14", "$J$14"c.AutoFilter Field:=c.Column - i, _Visibledropdown:=FalseCase Elsec.AutoFilter Field:=c.Column - i, _Visibledropdown:=TrueEnd SelectNextApplication.ScreenUpdating = TrueEnd Sub
Caso a tabela não comece na célula A1, podemos especificar o intervalo da posição, mostrando todas as setas desse intervalo.
  Sub ShowArrowsRange()
'shows arrows in specified range
Dim c As Range
Dim i As Integer
Dim rng As Range
Set rng = Range("D14:J14")
i = rng.Cells(1, 1).Column - 1
Application.ScreenUpdating = False
For Each c In Range("D14:J14")
c.AutoFilter Field:=c.Column - i, _
Visibledropdown:=True
Next
Application.ScreenUpdating = True
End Sub
Tags: VBA, Excel, Autofilter, filtro, automático, protegida, senha, hide, arrow, seta, AutoFiltro, worksheet, filtered, copy, filtrada, visible, esconder,
    

Nenhum comentário:
Postar um comentário