第五章 事件篇 5.8 Worksheet_Deactivate事件 這是一個(gè)工作表事件,當(dāng)工作表由活動(dòng)工作表變?yōu)椴换顒?dòng)工作表時(shí)觸發(fā)的事件。與其相對(duì)應(yīng)的是Worksheet_Activate事件,把一個(gè)當(dāng)前不活動(dòng)的工作表變?yōu)榛顒?dòng)工作表。 我們用上一節(jié)學(xué)過的Worksheet_SelectionChange事件與Worksheet_Deactivate事件結(jié)合來學(xué)習(xí)這個(gè)事件的用法。 我們用鼠標(biāo)選定表格里的一片區(qū)域,然后統(tǒng)計(jì)選定區(qū)域里有多少個(gè)漢字、多少個(gè)數(shù)字、多少個(gè)字母和一共有多少個(gè)字符,把統(tǒng)計(jì)結(jié)果顯示到狀態(tài)欄里。當(dāng)我們離開當(dāng)前作表時(shí),把狀態(tài)欄的顯示結(jié)果清空。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ss As Range, 漢字%, 數(shù)字%, 字母%, 所有字符% Set reg = CreateObject('vbscript.regexp') If Not Target Is Nothing Then For Each ss In Target With reg .Global = True .Pattern = '[一-龢]' Set sj1 = .Execute(ss) .Pattern = '\d' Set sj2 = .Execute(ss) .Pattern = '[a-zA-Z]' Set sj3 = .Execute(ss) .Pattern = '.' Set sj4 = .Execute(ss) End With 漢字 = 漢字 + sj1.Count 數(shù)字 = 數(shù)字 + sj2.Count 字母 = 字母 + sj3.Count 所有字符 = 所有字符 + sj4.Count Next ss Application.StatusBar = '漢字:' & 漢字 & '個(gè) 數(shù)字:' & 數(shù)字 & '個(gè) 字母:' & 字母 & '個(gè) 所有字符:' & 所有字符 & '個(gè)' Else Application.StatusBar = '' End If End Sub 在這個(gè)程序里,我們分別用正則表達(dá)式'[一-龢]'、'\d'、'[a-zA-Z]'、'.'來分別匹配選定區(qū)域里每一個(gè)單元格的漢字、數(shù)字、字母和所有字符,統(tǒng)計(jì)出來結(jié)果后累加到對(duì)應(yīng)的變量上,最后把統(tǒng)計(jì)結(jié)果顯示到狀態(tài)欄里。 程序運(yùn)行結(jié)果如下: 當(dāng)我們離開當(dāng)前工作表時(shí),如果顯示結(jié)果還在,會(huì)對(duì)下一個(gè)工作表的使用造成一定的影響,所以當(dāng)工作表變?yōu)椴换顒?dòng)工作表時(shí),我們就要清空狀態(tài)欄。這時(shí)就要用到Worksheet_Deactivate事件了。 Private Sub Worksheet_Deactivate() Application.StatusBar = '' End Sub 清空后狀態(tài)欄顯示如下: |
|