本節(jié)介紹兩個事件示例,,幫助大家學習理解事件的具體應用,代碼會盡量分析的詳細些幫助理解,。 1,、選中某個值時,用顏色標注同樣的值,。 示例一的效果如下,,假如每周的值班如圖,當在B1:C7單元格中選中一個值時,,同樣的值都會標注顏色,。 具體代碼如下,后面會逐段分析,。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range('b1:c7').Interior.ColorIndex = xlNone If Application.Intersect(Target, Range('b1:c7')) Is Nothing Then Exit Sub End If If Target.Count > 1 Then Set Target = Target.cells(1) End If Dim rng As Range For Each rng In Range('b1:c7') If rng.Value = Target.Value Then rng.Interior.ColorIndex = 34 End If Next End Sub 代碼的整體結(jié)構(gòu)是Worksheet_SelectionChange事件,。當單元格選擇發(fā)生改變時,即觸發(fā)事件將選中單元格傳遞到target參數(shù),。 Range('b1:c7').Interior.ColorIndex = xlNone 首先每次事件觸發(fā)時都將B1:C7單元格的區(qū)域的設置重新設置為無色,。 If Application.Intersect(Target, Range('b1:c7')) Is Nothing Then Exit Sub End If 這段用于限制只有B1:C7的單元格區(qū)域選擇改變時會觸發(fā)SelectionChange事件。 Application.Intersect方法返回參數(shù)指定的多個單元格的公共區(qū)域,,它的參數(shù)為兩個以上的range單元格,。代碼中表示返回Target和Range('b1:c7')的公共區(qū)域,。當選擇超出B1:C7時,,就沒有公共區(qū)域即無結(jié)果,if判斷is nothing 成立,,執(zhí)行exit sub 退出事件過程,。 If Target.Count > 1 Then Set Target = Target.cells(1) End If 這段是考慮如果選中多個單元格的情況,判斷選中的單元格數(shù)量超過一個即Target.Count > 1,,將Target.cells(1)選中,,即選中的多個單元格區(qū)域最左上角的單元格,,用set語句重新賦值給Target,這樣就只有一個單元格的值,。 Dim rng As Range For Each rng In Range('b1:c7') If rng.Value = Target.Value Then rng.Interior.ColorIndex = 34 End If Next 這段代碼就通過for each循環(huán)語句,,遍歷B1:C7單元格區(qū)域,當值與選中的單元格值相同時,,設置該單元格的背景色,。最后結(jié)束循環(huán)。(當下次事件觸發(fā)時,,會再次刪除所有顏色,。) 這是示例主要幫助大家如何去限制區(qū)域使用工作表事件,采用的方法也比較典型,,希望有助于助理解,。 2、每隔一分鐘自動保存工作簿 在使用excel可能手一抖關閉時沒保存,,或者excel報錯的情況,,下面的案例就是文件被打開后讓文件每隔一分鐘自動保存一次。(代碼中會涉及調(diào)用過程的知識,。) 涉及定時或者間隔時間的時間可以想到application對象的ontime方法,。 首先在工程資源管理窗口,插入一個模塊,,在模塊中寫入兩個過程代碼: 新建dingshi過程,,通過application對象的ontime方法,設置現(xiàn)在起1分鐘之后運行baocun過程,。 新建baocun過程,,設置ThisWorkbook.Save保存當前工作簿,然后通過call dingshi再次調(diào)用dingshi過程,,這樣又會再一分鐘之后運行baocun,,形成一個循環(huán)。 再換到thisworkbook模塊中,,新建workbook的open事件,,然后通過Call dingshi調(diào)用dingshi過程即可實現(xiàn)。 這樣當工作簿打開之后,,運行dingshi過程,,在1分鐘之后運行baocun過程,baocun過程保存工作簿之后會再次調(diào)用dingshi過程,,形成1分鐘的循環(huán)保存,。 大家可以編寫代碼嘗試下,可以修改保存時間,,還可以利用以前學過的workbook的saveas方法將文件另存,。 本節(jié)介紹兩個事件的綜合示例,,涉及到如何限制事件觸發(fā)的區(qū)域,觸發(fā)事件后的條件判斷,,如何調(diào)用過程等,。希望介紹有助于理解。下節(jié)會再介紹兩個綜合示例,,祝大家學習快樂,。 Live and Learn |
|
來自: L羅樂 > 《VBA基礎入門教程》