Dá pra simplificar ou fazer de outro jeito, mas tenta assim...
Troca isso:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal target As Range)
Dim i As Long
'Armazena o Valor anterior
ReDim GlbValorAntigo(target.Count)
For i = 1 To target.Count
GlbValorAntigo(i) = target(i)
Next i
End Sub
Por isso [ATUALIZADO]:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal target As Range)
If CheckCol(Replace(target.Address(0, 0), ":", "")) = True Then Exit Sub
If CheckLin(Replace(target.Address(0, 0), ":", "")) = True Then Exit Sub
Dim i As Long
'Armazena o Valor anterior
ReDim GlbValorAntigo(target.Count)
For i = 1 To target.Count
GlbValorAntigo(i) = target(i)
Next i
End Sub
Public Function CheckCol(target As String) As Boolean
Dim i As Long
Dim n As Long
n = 0
CheckCol = False
For i = 1 To Len(target)
If IsNumeric(Mid(target, i, 1)) Then n = n + 1
Next i
If n = 0 Then CheckCol = True
End Function
Public Function CheckLin(target As String) As Boolean
Dim i As Long
Dim n As Long
n = 0
For i = 1 To Len(target)
If Not IsNumeric(Mid(target, i, 1)) Then n = n + 1
Next i
If n = 0 Then CheckLin = True
End Function
De imediato, o que ele está fazendo é ignorando a gravação das informações do intervalo selecionado na memória caso seja selecionado uma linha inteira ou coluna inteira.
Com isso não vai demorar e você poderá ocultar ou reexibir normalmente. Entretando, caso selecione a coluna inteira e pressione um "Delete", por exemplo, excluindo todas as informações contidas na coluna, não salvará esse log, como eu disse acima do comprometimento do LOG.
Qualquer coisa da o grito.
Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 19/06/2017 11:06 am