Eu suspeito que as chamadas de 20-30K para InStr(UCase())
sejam o problema.
Eu sugiro que você defina algumas colunas auxiliares.
Por exemplo,
se os dados de "callNummer" e "Destination" estiverem nas colunas A
e B
, defina
-
Y1
→=IFERROR(SEARCH("store", A1), 0)
-
Z1
→=IFERROR(SEARCH("221", B1), 0)
e, em seguida, altere seu código VBA para verificar
se Yn
e Zn
são > 0
.
Desta forma, a verificação da cadeia de caracteres é feita
sempre que os dados "callNummer" e "Destination" forem modificados,
e há muito menos trabalho para a rotina do VBA.
E, claro, você pode ocultar as colunas auxiliares quando tudo estiver funcionando.
Não sei exatamente como traduzir
suas declarações pvtItemN.Visible = …
neste framework.
Mas mesmo que você não consiga fazer isso funcionar, você pode mudar
o teste InStr(UCase(pvtItem2), "221")
para InStr(pvtItem2, "221")
.
Se tudo o que você procura é um número,
não há motivo para converter o conteúdo alfabético da célula em maiúsculas.