Olá Mics,
Olhei a macro mas não entendi muito bem o que fazer.
Algumas perguntas:
- Me concentrei na sub
ConverterConlicitacao porque deduzi que é dela que estamos tratando. Deduzi corretamente?
- Quando for encontrada um número de Conlicitacao, onde está o histórico dos números já processados no passado, onde pode feita a consulta?
- Imaginei que a planilha Resumo fosse esse histórico, mas abandonei a ideia quando ví que os dados processados são colador nas primeiras linhas da planilha Resumo, por cima do que já tem lá. Se Resumo é um histórico, os dados deveriam ir pra parte de baixo, a partir da primeira linha branca, por exemplo. Se é uma planilha auxiliar onde os dados da planilha "Colar e-mails" são jogados para análise, não seria melhor limpar essa planilha antes da colocar os novos valores?
- Poderia me explicar o ojbetivo do final da macro (FOR FOR IF)? Pode ser que a falta de entendimento meu dessa parte é que tenha gerado as demais dúvidas.
Durante a análise da SUB, não resisti e alterei algumas coisas, mas sem alterar a funcionalidade. A macro abaixo faz o mesmo que a original, porém acho que é um pouco mais simples.
Código: Selecionar todosSub ConverterConlicitacao()
With Colar
cls = .UsedRange.Columns.Count
rws = .UsedRange.Rows.Count
x = 0: ReDim Preserve Rol(18, x)
Rol(0, x) = "Nº ConLicitação"
Rol(1, x) = "Unidade Licitante"
Rol(2, x) = "Cidade"
Rol(3, x) = "Objeto"
Rol(4, x) = "Homepage"
Rol(5, x) = "Observação"
Rol(6, x) = "Edital"
Rol(7, x) = "Datas"
Rol(8, x) = "Endereço"
Rol(9, x) = "Telefone"
Rol(10, x) = "Processo"
Rol(11, x) = "Edital Online"
For r = 1 To rws
For c = 1 To cls
Select Case .Cells(r, c).Value
Case Is = "Objeto:":
x = x + 1
ReDim Preserve Rol(18, x)
Rol(3, x) = .Cells(r, c + 1).Value
Rol(11, x) = "Não"
Case Is = "Nº ConLicitação:": Rol(0, x) = .Cells(r, c + 1).Value
Case Is = "Nº ConLicitação :": Rol(0, x) = .Cells(r, c + 1).Value
Case Is = "Unidade Licitante:": Rol(1, x) = .Cells(r, c + 1).Value
Case Is = "Unid. Licitante:": Rol(1, x) = .Cells(r, c + 1).Value
Case Is = "Cidade:": Rol(2, x) = .Cells(r, c + 1).Value
Case Is = "Homepage:": Rol(4, x) = .Cells(r, c + 1).Value
Case Is = "Observação:": Rol(5, x) = .Cells(r, c + 1).Value
Case Is = "Edital:": Rol(6, x) = .Cells(r, c + 1).Value
Case Is = "Datas:": Rol(7, x) = .Cells(r, c + 1).Value
Case Is = "Endereço:": Rol(8, x) = .Cells(r, c + 1).Value
Case Is = "Fone:": Rol(9, x) = .Cells(r, c + 1).Value
Case Is = "Processo:": Rol(10, x) = .Cells(r, c + 1).Value
Case Is = "Processo :": Rol(10, x) = .Cells(r, c + 1).Value
Case Is = "Edital on-line:": Rol(11, x) = "Sim"
End Select
Next
Next
x = x + 1
End With
With Resumo
.Range("A1:L" & x).Value = Application.Transpose(Rol)
For r1 = 2 To x
For r2 = 2 To KW.UsedRange.Rows.Count
s = UCase(KW.Cells(r2, 1).Value)
If InStr(UCase(.Cells(r1, 2).Value), s) > 0 Or _
InStr(UCase(.Cells(r1, 4).Value), s) > 0 Or _
InStr(UCase(.Cells(r1, 7).Value), s) > 0 Then
.Cells(r1, 13).Value = .Cells(r1, 13).Value & KW.Cells(r2, 2).Value & " | "
.Cells(r1, 14).Value = .Cells(r1, 14).Value & KW.Cells(r2, 3).Value & " | "
End If
Next r2
Next r1
End With
End Sub
Encontrei um erro na tua macro:
Após o select, as linhas
Rol(5, x) = Dts
Rol(6, x) = Obs
Rol(7, x) = Edi
deveriam ser
Rol(5, x) = Obs
Rol(6, x) = Edi
Rol(7, x) = Dts
Vamos esclarecer as dúvidas acima pra partir pra verificação que você pediu inicialmente.
Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.
Jimmy San Juan