Прямо сейчас, когда пользователь выбирает ячейку, связанная ячейка подсвечивается добавлением границы толщины среды. Это делается для календаря раз.VBA обратное форматирование на ячейке unselect
Например, когда пользователь щелкает Д4 он должен добавить границу B5 и когда снимает выделение пользователя d4 он должен не-пограничную B5:
Код для этого выглядит следующим образом, и она работает:
If Not Intersect(Target, Range("$D$4")) Is Nothing Then
Range("$B$5").Borders(xlEdgeBottom).Weight = xlMedium
Range("$B$5").Borders(xlEdgeTop).Weight = xlMedium
Range("$B$5").Borders(xlEdgeLeft).Weight = xlMedium
Range("$B$5").Borders(xlEdgeRight).Weight = xlMedium
Else
Range("$B$5").Borders(xlEdgeBottom).Weight = xlThin
Range("$B$5").Borders(xlEdgeTop).Weight = xlThin
Range("$B$5").Borders(xlEdgeLeft).Weight = xlThin
Range("$B$5").Borders(xlEdgeRight).Weight = xlThin
End If
Проблема в том, что он работает в течение 30 ячеек при каждом выборе ячейки. Это означает, что даже если ничего не изменилось, все 30 ячеек проверяют и перезапускают их форматирование, или все 30 «остальных» блоков запускаются каждый раз без необходимости. Это всего несколько сотен команд, но это определенно быстро ускоряет работу. Есть ли способ очистить это? В противном случае понадобится 30 ячеек * 11 строк кода, которые кажутся чрезмерными.
Это поможет показать код, который запускает форматирование. Возможно, ваш код будет гораздо более кратким, если у нас будет немного больше контекста. –
Я предполагаю, что вы пытаетесь добавить функцию «фокус» на ваш предел, а ваша «еще» часть сбрасывает все остальные границы. Но все, что вам нужно, чтобы сбросить предыдущую 1 выделенную ячейку. можете ли вы записать выбранную ячейку и сохранить ее в vba или скрытой ячейке и только сбросить эту ячейку в части «If»? – Larry