Boa tarde,
Não estou conseguindo selecionar as células de outra ABA (NÃO ATIVA) e HABILITAR/DESABILITAR os filtros. Bem como também não consigo fazer Ordenação dessa mesma aba.
O código abaixo é o procedimento do processo.
*****************************************************************************************************
Private Sub Montar_Agenda()
'
Dim xAGENDA_CRMV As Integer
Dim xAGENDA_CIDADE As String
Dim xAGENDA_ROTA As String
Dim xAGENDA_DATA_ULT As Date
Dim xAGENDA_DATA_PRO As Date
'
Dim xCRMV1 As Integer
Dim xCRMV2 As Integer
Dim xData_Atual As Date
Dim xGrava As String
'
xData_Atual = Format(Now, "DD/MM/YYYY")
'
Application.ScreenUpdating = False
'
''********************************************************************************************************************************************************************************
'NESTE PONTO NÃO CONSIGO FAZER A SELEÇÃO E DESATIVAR OS FILTROS DA ABA "ROTAS" POR ELA NÃO ESTAR ATIVA E NEM PODE ESTAR NESSE MOMENTO
'
With ThisWorkbook
On Error Resume Next
.Worksheets("ROTAS").Range("A2:J2").SpecialCells(xlCellTypeConstants).Select
End With
If ActiveSheet.AutoFilterMode = True Then ' VERIFICA SE O FILTRO ESTA ATIVADO, CASO SIM DESATIVA
Selection.AutoFilter
End If
'
'*************************************************************************************************************************************************************
'NESTE PONTO NÃO CONSIGO FAZER A SELEÇÃO E ORDENAR AS INFORMAÇÕES DA ABA "ROTAS" QUE NÃO ESTÁ ATIVA E NEM PODE ESTAR.
'
xLin = Application.WorksheetFunction.CountA(Sheets("ROTAS").Columns(3)) + 1
Range("A2:V" & xLin).Select
ActiveWorkbook.Worksheets("ROTAS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("ROTAS").Sort.SortFields.Add Key:=Range("I3:I" & xLin) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("ROTAS").Sort.SortFields.Add Key:=Range("J3:J" & xLin) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("ROTAS").Sort
.SetRange Range("A2:V" & xLin)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'
'*************************************************************************************************************************************************************
' A PARTIR DESTE PONTO TUDO FUNCIONA BEM
'
With ThisWorkbook
On Error Resume Next
.Worksheets("aux").Range("A1:K1000").SpecialCells(xlCellTypeConstants).ClearContents
Application.Goto ActiveWorkbook.Sheets("aux").Range(1, 1)
End With
'
xData = DateSerial(Year(Now), Month(Now), 1) ' PRIMEIRO DIA DO MÊS E ANO ATAUL
If xData <= xData_Atual Then
xlin2 = Application.WorksheetFunction.CountA(Sheets("HISTORICO").Columns(1))
Do Until xlin2 = 1
xData = Sheets("HISTORICO").Cells(xlin2, "A")
If Format(Month(Format(xData, "DD/MM/YYYY")), "00") >= Format(Month(Format(Now, "DD/MM/YYYY")), "00") Then
If xData <= xData_Atual Then
xAGENDA_DATA_ULT = Format(Sheets("HISTORICO").Cells(xlin2, 1), "DD/MM/YY")
xAGENDA_CRMV = CStr(Sheets("HISTORICO").Cells(xlin2, 2)) ' CONVERTER O CRMV DE NUMERO PARA TEXTO
xAGENDA_CIDADE = Application.WorksheetFunction.VLookup(xAGENDA_CRMV, Sheets("ROTAS").Range("A3:G1000"), 7, False)
xAGENDA_ROTA = Application.WorksheetFunction.VLookup(xAGENDA_CRMV, Sheets("ROTAS").Range("A3:H1000"), 8, False)
xAGENDA_TIPO_ROTA = Format(Sheets("HISTORICO").Cells(xlin2, 8), "DD/MM/YY")
If xAGENDA_TIPO_ROTA = "R" Then
xLin = Application.WorksheetFunction.CountA(Sheets("aux").Columns(1)) + 1 ' LOCALIZA A PRÓXIMA LINHA EM BRANCO
Sheets("aux").Cells(xLin, 1) = xAGENDA_CRMV
Sheets("aux").Cells(xLin, 2) = xAGENDA_CIDADE
Sheets("aux").Cells(xLin, 3) = xAGENDA_ROTA
Sheets("aux").Cells(xLin, 4) = xAGENDA_DATA_ULT
End If
End If
xlin2 = xlin2 - 1
Else
Exit Do
End If
Loop
End If
'
xlin1 = 3
Do Until Sheets("ROTAS").Cells(xlin1, "I") = ""
'
xAGENDA_DATA_PRO = Format(Sheets("ROTAS").Cells(xlin1, "I"), "DD/MM/YY")
'
xGrava = "N"
If xAGENDA_DATA_PRO > xData_Atual Then
xGrava = "S"
Else
xGrava = "S"
xLin = 1
Do Until Sheets("aux").Cells(xLin, "D") = ""
If xAGENDA_DATA_PRO = Format(Sheets("aux").Cells(xLin, "d"), "DD/MM/YY") Then
xGrava = "N"
Exit Do
End If
xLin = xLin + 1
Loop
End If
If xGrava = "S" Then
xAGENDA_CRMV = CStr(Sheets("ROTAS").Cells(xlin1, 1))
xAGENDA_CIDADE = UCase(Sheets("ROTAS").Cells(xlin1, 7))
xAGENDA_ROTA = UCase(Sheets("ROTAS").Cells(xlin1, 8))
xLin = Application.WorksheetFunction.CountA(Sheets("aux").Columns(1)) + 1 ' LOCALIZA A PRÓXIMA LINHA EM BRANCO
Sheets("aux").Cells(xLin, 1) = xAGENDA_CRMV
Sheets("aux").Cells(xLin, 2) = xAGENDA_CIDADE
Sheets("aux").Cells(xLin, 3) = xAGENDA_ROTA
Sheets("aux").Cells(xLin, 4) = xAGENDA_DATA_PRO
End If
xlin1 = xlin1 + 1
'
Loop
'
ActiveWorkbook.Worksheets("aux").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("aux").Sort.SortFields.Add Key:=Range("D1:D1000"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("aux").Sort.SortFields.Add Key:=Range("B1:B1000"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("aux").Sort.SortFields.Add Key:=Range("C1:C1000"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("aux").Sort
.SetRange Range("A1:D1000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'
''***********************************************************************************************************************************************************************************
'NESTE PONTO NÃO CONSIGO FAZER A SELEÇÃO E VOLTAR ATIVAR OS FILTROS DA ABA "ROTAS" POR ELA NÃO ESTAR ATIVA E NEM PODE ESTAR NESSE MOMENTO
'
' With ThisWorkbook
' On Error Resume Next
' .Worksheets("ROTAS").Range("A2:J2").SpecialCells(xlCellTypeConstants).Select
' End With
' If ActiveSheet.AutoFilterMode = False Then ' VERIFICA SE O FILTRO ESTA ATIVADO, CASO SIM DESATIVA
' Selection.AutoFilter
' End If
'
Application.ScreenUpdating = True
'
End Sub
Postado : 08/08/2017 1:14 pm