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.