前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实战技巧:快速返回最后一次编辑的单元格

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

作者头像
fanjy
发布2022-11-16 14:15:55
8930
发布2022-11-16 14:15:55
举报
文章被收录于专栏:完美Excel

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

可以使用Excel事件来实现。

按Alt+F11组合键,打开VBE,双击工程资源管理器窗口中的ThisWorkbook模块,在其代码模块中,输入下面的代码:

代码语言:javascript
复制
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事件,在每次退出工作簿时都会在指定的单元格中输入最近保存工作簿的时间,如下面的代码:

代码语言:javascript
复制
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。代码如下:

代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档