O evento Redimensionar foi desde sempre esquisito no Excel e não melhorou nas últimas versões. Nunca funcionou totalmente em alguns casos envolvendo janelas maximizadas ou minimizadas e, aparentemente, encaixe usa um semelhante mecanismo.
Resolver o problema requer, portanto, uma interface direta com o API do Windows e interceptando as mensagens do Windows relacionadas ao redimensionamento.
Método 1: criando uma nova bomba de mensagens para o aplicativo
Você encontrará o código VB inteiro na última entrada de Jaafar Tribak da postagem Detectando o redimensionamento da janela do aplicativo do Excel .
Em poucas palavras, você precisa declarar as funções da API do Windows
FindWindow
e SetWindowLong
e use-os para encontrar a janela do aplicativo,
chamado XLMAIN
e defina sua própria bomba de mensagens.
Você então intercepta as mensagens relevantes do Windows, processa-as,
e, finalmente, passá-los para o Windows.
O código inteiro é muito longo para reproduzir aqui e adaptá-lo à sua necessidade
vai exigir algum conhecimento de VB e API do Windows.
Método 2: usar DLLs C
Para versões de 32 bits do Excel, você pode usar a DLL C
(Biblioteca de Carregamento Dinâmico) SubCls.dll
e módulo de código modSubCls.bas
pode ser baixado do site .
A descrição de como usá-los pode ser encontrada no post Detectar o evento de redimensionamento de uma janela .
Concluo observando que não conheço nenhuma solução fácil para esse problema. Eu temo que você precise fazer alguma programação pesada para contornar esses problemas. deficiências do Excel.