Надеюсь, это кому-нибудь поможет!
Проблема была вызвана тем, что код выполнялся до завершения всех вычислений и обновления диапазона. Во время калибровки c ячейки в диапазоне кратко по умолчанию стали «скрывать», что вызвало скрытие столбца.
Я обнаружил Application.CalculateUntilAsyncQueriesDone
, что заставило код выполняться после завершения всех вычислений и диапазона был обновлен. Пересмотренный код ниже:
Sub ShowHide()
Dim c As Long
Application.ScreenUpdating = False
Application.CalculateUntilAsyncQueriesDone
For c = 2 To 64
If Cells(16, c).Value = "Hide" Then
Columns(c).Hidden = True
Else
Columns(c).Hidden = False
End If
Next c
Application.ScreenUpdating = True
End Sub
Примечание: Я видел несколько потоков, используя оператор IF и затем, а затем Application.CalculationState = xlDone
, но это не сработало. Если кто-нибудь знает, почему я хотел бы понять.