當用戶選擇一個單元格時,通過添加中等厚度的邊框來突出顯示關聯的單元格。這是爲了一個時間日曆。單元格上的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