当用户选择一个单元格时,通过添加中等厚度的边框来突出显示关联的单元格。这是为了一个时间日历。单元格上的VBA反向格式取消选择
例如,当用户点击D4它必须添加边框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行代码,看起来过多。
这将有助于显示触发格式的代码。如果我们有更多的上下文,你的代码可能会更简洁。 – 2014-12-05 07:21:07
我假设你正试图为你的excel添加一个“焦点”寄宿生功能,而你的“其他”部分正在重新设置所有其他寄宿生。但是,您需要重置前面1个选定单元的边界。你可以记录当前选中的单元格并将其保存在vba或隐藏的单元格中,并只在“If”部分中重置该单元格? – Larry 2014-12-05 07:29:46