So nao entendi porque B11 em Plan 1 sofreu o Calculo
Porque B11 também está na coluna B, e vc pediu um recálculo em toda a coluna B, veja:
With Worksheets("Plan1").Columns("B")
...
.Calculate
End With
...pois no codigo abaixo eu especifiquei que somente a Range B5 seria atualizada o calculo.
.Range("B5").Dirty só diz que esta célula está "suja" (Dirty) e terá que ser atualizada quando houver um recálculo futuro e não que você especificou que só ela seria atualizada.
Para atualizar somente a B5, vc deveria ter usado:
.Range("B5").Calculate
Note que nesse caso não teria sido nem necessário dizer que a célula estava suja, pois você ordenou explicitamente que ela fosse recalculada, então tanto faria se estivesse ou não marcada com Dirty.
No outro código também vc manda recalcular toda a planilha, então é mais abrangente ainda e o .Dirty acaba sendo inútil pois o range está na planilha que vc mandou recalcular.
With Worksheets("Plan1")
.Range("B5").Dirty
.Calculate
End With
Para conhecer um pouco mais sobre recálculo do Excel, veja o artigo no MSDN Recálculo do Excel
Postado : 31/01/2018 7:32 am