O que aconteceu: abri uma macro esta manhã para trabalhar na expansão. Eu corri para verificar que ainda estava funcionando. Ele jogou um "erro de automação".
[nota lateral] (Eu sempre fui acostumado a ver minhas variáveis globais na minha janela local. Em uma boa guia suspensa abaixo do nome do módulo. Acontece que isso só acontece quando você as declara publicamente no módulo que você está visualizando. Eu não sabia disso, e minha nova macro tem todas as minhas variáveis públicas em seu próprio módulo separado) [return]
Então, eu depurei meu código, procurei por que esse objeto da planilha estava gerando um erro e vi: <No Variables>
na minha janela de locais onde minhas variáveis públicas costumavam ser. Naturalmente, entrei em pânico. Eu percebi que o programa deve ter parado de referenciar variáveis públicas em outros módulos. Eu verifiquei todos os outros computadores no meu escritório, a mesma coisa. Eu procurei freneticamente na internet. Nada disso. Desparado, eu mudei para o Stack Overflow, o Server Fault e o Super User e a sala de bate-papo na Code Review. Sem sorte.
Então eu realmente entrei em pânico. Eu, de bom grado, liguei para o suporte técnico da Microsoft.
Escusado será dizer que isso foi tão mal que desisti. Fui embora um pouco e tirei minhas frustrações em um andar vazio de nosso prédio com minha katana (seguro LARP, então nenhum dano real ao prédio).
Depois voltei, voltei a conversar, conversei com mais pessoas, tentei mais algumas coisas e finalmente descobri a coisa sobre a janela dos locais, o que me permitiu encontrar o problema real com o meu código:
Minha macro estava fechando uma pasta de trabalho antes de um ponto no código em que eu estava tentando fazer referência a suas planilhas. Foi isso.
Ao todo, desperdicei todo um dia de trabalho tentando corrigir um problema que não existia.
Então, aqui está uma lista de coisas que eu poderia ter feito / deveria ter feito, o que evitaria isso:
Controle de versão: Especificamente, é possível reverter o código para um ponto anterior no tempo em que se sabia que ele estava funcionando. Isso teria demonstrado imediatamente que meu código de, e. no dia anterior ainda correu como esperado.
A janela de inspeção: no IDE do VBA permite especificar variáveis e acompanhar seu status em toda a macro. isso teria me mostrado que minha variável ainda existia, ainda estava sendo referenciada, que de repente ficou vazia em um ponto no código.
Na verdade, executando as macros antigas: porque achei que a janela local também mostrava variáveis públicas e elas não estavam lá. Tudo o que fiz em outros computadores foi entrar em uma macro, ver que eles não estavam lá e assumiu o pior. Se eu tivesse acabado de executar qualquer uma das minhas macros até um dia antes, esse problema teria sido evitado.
TDD / Testes Unitários: Teria apanhado meu erro quase no momento em que o apresentei, e certamente poucos minutos depois de escrevê-lo, o que teria fornecido uma grande dica sobre o que deu errado e impediu essa coisa toda antes mesmo de começar.
Não entre em pânico: Esqueci / não tentei muitas coisas realmente óbvias, qualquer uma delas teria provado que minha teoria estava errada. Em vez disso, porque achei que tinha um problema, fui procurar apenas evidências que o confirmariam, não por evidências que o refutassem.
No lado positivo, pelo menos agora sou muito mais sábio do que estava nesta manhã.