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