打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA实战技巧:快速返回最后一次编辑的单元格
userphoto

2022.11.04 四川

关注

excelperfect

在有些情况下,我们可能需要快速返回到最后一次编辑的单元格。例如,最后一次编辑的单元格是单元格K112,然而我的当前单元格在单元格C1,如何定位这个最后编辑的单元格并快速返回到该单元格呢?

可以使用Excel事件来实现。

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

代码假设你正在操作的工作表是Sheet1,并且将返回单元格的链接放置在单元格A2中,你可以根据实际情况修改为适合你的工作表和单元格地址。

此时,你在工作表Sheet1中进行编辑操作后,单击单元格A2中的“返回”,可以快速回到最后一次编辑操作的单元格,如下图1所示。

1

然而,如果在工作表中有其它与Workbook_SheetChange事件相关的操作,可能不会达到我们想要的效果。例如,如果有另一个Workbook_BeforeSave事件,在每次退出工作簿时都会在指定的单元格中输入最近保存工作簿的时间,如下面的代码:

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

那么,当我们要回到最近我们手动编辑的单元格时,总会回到这个保存时间的单元格。

如何摆脱Excel事件操作带给我们的影响呢?可以使用Application对象的EnableEvents属性,先将其值设置为False,暂时屏蔽事件,待操作完成后再将其设置为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

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Xcel事件
Excel 工作簿、工作表事件例子
打开工作簿时总是跳转到最后更改内容的单元格
【VBA初学者教程】- 第一章 VBA入门知识:使用Excel对象的事件
自学资料(Excel VBA)[收集整理16]
跟烟花学习VBA之40:Workbook对象(七)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服