Pathi, vamos por parte, estava no serviço e como já tinha este exemplo de filtrar em abas, que alias tem aqui no Forum, fiz uma adaptação as pressas e realmente deixei passar a opção de apagar automaticamente as abas adicionadas se acionar a macro mais de uma vez.
Para resolver esta questão troque a rotina pela a abaixo :
Sub FiltraEmAbasOrd()
Dim ws1 As Worksheet
Dim wsNew As Worksheet
Dim rng As Range
Dim r As Integer
Dim c As Range
Dim sVerificaSheet
Set ws1 = Sheets("Orders")
'Calcula e Monta o range Nomeado
Call AddNameRange
Set rng = Range("Database")
'extract a list of Sales Reps
ws1.Columns("S:S").AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=Range("X1"), Unique:=True
r = Cells(Rows.Count, "X").End(xlUp).Row
'set up Criteria Area
Range("Z1").Value = Range("S1").Value
For Each c In Range("X2:X" & r)
'add the rep name to the criteria area
ws1.Range("Z2").Value = c.Value
'Verifica se já existe a aba
'e Deleta
sVerificaSheet = c.Value
DeleteSheet (sVerificaSheet)
'add new sheet and run advanced filter
Set wsNew = Sheets.Add
wsNew.Move After:=Worksheets(Worksheets.Count)
wsNew.Name = c.Value
rng.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Orders").Range("Z1:Z2"), _
CopyToRange:=wsNew.Range("A1"), _
Unique:=False
Next
ws1.Select
ws1.Columns("X:Z").Delete
End Sub
E acrescente esta tambem que deleta a aba se já existir:
Sub DeleteSheet(sht As String)
Dim mySheetName As String
mySheetName = sht
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(mySheetName).Delete
Err.Clear
Application.DisplayAlerts = True
End Sub
Quanto a exibição em um Listview ou listbox, eu até posso adaptar, mas me esclareça alguns pontos :
1 °) Neste seu modelo temos 22 colunas, precisa que todas vão para um Listview ? ou só os contratos e o vencimento ?(que aparecesse uma janela com os contratos em cada situação...)
2° ) No modelo que você enviou, não temos a coluna que o gtsalikis adicionou com a formula, esta coluna continuaria ?
Se SIM, fica mais fácil, se NÃO, temos de construir uma rotina para ir comparando e calculando as datas linha por linha, o que demandaria um certo tempo de processamento uma vez que diz que pode passar de 200 registros, então o ideal é filtrar primeiro e depois carregar um listview.
Fico no aguardo.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 12/02/2014 4:19 pm