excelperfect
在有些情況下,我們可能需要快速返回到最后一次編輯的單元格。例如,最后一次編輯的單元格是單元格K112,然而我的當(dāng)前單元格在單元格C1,如何定位這個(gè)最后編輯的單元格并快速返回到該單元格呢?
可以使用Excel事件來實(shí)現(xiàn)。
按Alt+F11組合鍵,打開VBE,雙擊工程資源管理器窗口中的ThisWorkbook模塊,在其代碼模塊中,輸入下面的代碼:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ws As Worksheet
Set ws =Worksheets('Sheet1')
Sh.Hyperlinks.Add Anchor:=ws.Range('A2'),Address:='', SubAddress:= _
Sh.Name & '!' & Target.Address, ScreenTip:='單擊返回到最近一次編輯的單元格',TextToDisplay:='返回'
End Sub
代碼假設(shè)你正在操作的工作表是Sheet1,并且將返回單元格的鏈接放置在單元格A2中,你可以根據(jù)實(shí)際情況修改為適合你的工作表和單元格地址。
此時(shí),你在工作表Sheet1中進(jìn)行編輯操作后,單擊單元格A2中的“返回”,可以快速回到最后一次編輯操作的單元格,如下圖1所示。
圖1
然而,如果在工作表中有其它與Workbook_SheetChange事件相關(guān)的操作,可能不會(huì)達(dá)到我們想要的效果。例如,如果有另一個(gè)Workbook_BeforeSave事件,在每次退出工作簿時(shí)都會(huì)在指定的單元格中輸入最近保存工作簿的時(shí)間,如下面的代碼:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range('SaveTime') = _
'Last saved' & Format(Time, ' h:mm am/pm') &', ' & Round(FileLen(ActiveWorkbook.FullName) / 1000000, 1) &'Mb'
Application.DisplayAlerts = True
End Sub
那么,當(dāng)我們要回到最近我們手動(dòng)編輯的單元格時(shí),總會(huì)回到這個(gè)保存時(shí)間的單元格。
如何擺脫Excel事件操作帶給我們的影響呢?可以使用Application對(duì)象的EnableEvents屬性,先將其值設(shè)置為False,暫時(shí)屏蔽事件,待操作完成后再將其設(shè)置為True。代碼如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Range('SaveTime') = _
'Last saved' & Format(Time, ' h:mm am/pm') &', ' & Round(FileLen(ActiveWorkbook.FullName) / 1000000, 1) &'Mb'
Application.DisplayAlerts = True
Application.EnableEvents= True
End Sub
歡迎在下面留言,完善本文內(nèi)容,讓更多的人學(xué)到更完美的知識(shí)。
歡迎到知識(shí)星球:完美Excel社群,進(jìn)行技術(shù)交流和提問,獲取更多電子資料,并通過社群加入專門的微信討論群,更方便交流。
聯(lián)系客服