如果我們想知道兩個單元格區域是否有共同的單元格,或者要知道兩個區域中哪些是共有單元格,即兩個單元格區域重合的部分,就可以使用Intersect方法。
如下圖所示,很容易看出單元格區域A1:C5與B3:E8相重合的區域是B3:C5,也就是紅色單元格部分。
示例:用VBA實現保護單元格功能
下面是一個示例。結合運用Union方法和Intersect方法,禁止用戶選擇工作表中B1:B5和C6:C10這兩塊單元格區域,這樣就可以防止用戶修改這兩塊區域中的數據。代碼如下:
Private SubWorksheet_SelectionChange(ByVal Target As Range)
Dim rngForbidden As Range
‘設置禁止操作的單元格區域
Set rngForbidden =Union(Range(“B1:B5”), Range(“C6:C10”))
‘如果所選擇的單元格沒有處于禁止操作的單元格區域中,則退出程序
If Intersect(Target, rngForbidden) IsNothing Then Exit Sub
‘選擇A1并發出警告
Range(“A1”).Select
MsgBox “不能選擇” &rngForbidden.Address & “中的單元格.”, vbCritical
End Sub
每當用戶在與包含該事件過程的模塊相關聯的工作表中選擇單元格區域時,就會觸發工作表的Worksheet_SelectionChange事件過程。代碼中,首先使用Union方法定義了由兩個非連續單元格區域組成的禁止操作的區域,然后使用Intersect方法檢查所選擇的區域與禁止操作的區域是否有重合,并作為If語句的判斷條件,如果沒有重合則退出事件過程,用戶正常操作,并不會感覺到什么;如果有重合,則光標定位到單元格A1并給出一條警告消息。
注:簡單地說,工作表事件就是用戶操作工作表時,工作表做出的相應響應。關于工作表事件將在以后詳細介紹。