Eu tenho a seguinte configuração:
Workbook1
com o valor 123
em A1 Workbook2
com valor =[Workbook1.xlsx]Sheet1!$A$1
em A1 Agora, quando eu vou e mudo o valor de Workbook1
para outra coisa, o valor é atualizado como esperado em Workbook2
.
Mas, infelizmente, quando eu minimizar Workbook2
e depois alterar o valor em Workbook1
e restaurar Workbook2
para verificar se o valor foi atualizado, ele ainda mostra o valor antigo.
Aviso:
depois de restaurar a janela mesmo se eu calcular (F9) ou calcular a folha inteira (SHIFT + F9) o valor não atualiza
quando eu adiciono uma nova planilha a Workbook2
, o valor é atualizado (foi mais uma coincidência que eu achei isso)
Existe uma maneira de corrigir isso?
Atualização:
Como Máté Juhász já mencionou nos comentários, existem várias maneiras de realmente atualizar o valor.
Eu mesmo descobri que a mudança da Visualização aciona a célula para atualizar ou simplesmente chaning a régua de Exibição, Exibir linhas de grade, Exibir propriedade de cabeçalhos que todos acionaram a célula para atualizar seu valor.
Eu também dei uma olhada:
MsgBox Application.Range("A1").Value
MsgBox Application.Range("A1").Text
Ambos emitem o valor correto enquanto o valor antigo ainda é visível.
Então surgiu a ideia de que todas as operações que acionam a célula têm uma coisa em comum: a tela é atualizada, então minha "solução" atual é a seguinte:
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim oldValue As Boolean
oldValue = Application.ScreenUpdating
Application.ScreenUpdating = Not oldValue
Application.ScreenUpdating = oldValue
End Sub
Com o conhecimento do problema sendo apenas uma tela sem atualização, eu também tentei simplesmente deslocar o meu celular para fora do intervalo visível e rolar para trás - isso também atualizou o valor da célula.
Além disso, agora faz sentido porque F9 e SHIFT + F9 não acionaram a célula para atualizar, já que o valor já está correto, simplesmente não há nada para o cálculo ser atualizado - já que ele já está lá, simplesmente não visível.