Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA实战技巧:快速返回最后一次编辑的单元格

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

作者头像
fanjy
发布于 2022-11-16 06:15:55
发布于 2022-11-16 06:15:55
1K01
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:1
代码可运行

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

可以使用Excel事件来实现。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EXCEL VBA语句集300
        定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示  Option Compare Text ‘字符串不区分大小写  Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能  工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化  工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
Tony老师
2020/03/05
2.3K0
Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
官方文档:https://xlrd.readthedocs.io/en/latest/
Python小二
2020/09/08
7.8K0
Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
VBA代码:强制用户将工作簿保存为.xlsm文件
这样,在保存Excel工作簿时,在“另存为”对话框的“保存类型”下拉列表中,只有一个选项即“Excel启用宏工作簿(*.xlsm)”,如下图1所示,从而让用户只能将工作簿保存为.xlsm文件。
fanjy
2024/02/29
3840
VBA代码:强制用户将工作簿保存为.xlsm文件
VBA专题10-25:使用VBA操控Excel界面之一个示例程序
在前面的一系列主题中,你已经学到了很多小的修改工作簿外观的VBA代码。下面,我们将介绍一个简单的示例程序,实现下面的功能特点:
fanjy
2021/03/26
2.5K0
VBA专题10-25:使用VBA操控Excel界面之一个示例程序
仿Excel的撤销功能
这是在www.vbaexpress.com中看到的一个示例,实现了自己以前想做而未做的事情。
fanjy
2024/05/13
2430
仿Excel的撤销功能
Excel实战技巧84: 让形状生动起来
我们可以将《Excel实战技巧83:制作动态的笑脸图》中介绍的技术运用到其他类型的形状中。下面再举一个例子,如下图1所示。
fanjy
2020/07/24
4500
Excel实战技巧84: 让形状生动起来
VBA实战技巧17:提高VBA代码执行效率的2段代码
CalculationState = Application.Calculation
fanjy
2021/01/20
1.5K0
VBA代码库10:强制用户启用宏
有时,必须确保用户在打开工作簿时启用宏,否则就不能实现工作簿的效果。由于无法使用宏去打开宏,因此需要一种确保用户启用宏的技术。下面讲解的方法隐藏除“欢迎”工作表(告诉用户启用宏)之外的所有工作表,并在每次保存工作簿时强制执行该工作表。如果用户在启用了宏的情况下打开工作簿,则宏将不会隐藏所有工作表。还可以使用Excel的 VeryHidden属性来实现工作表的隐藏,这意味着不能使用Excel的菜单来取消隐藏工作表。但是,这只会影响该工作簿,因此用户可以使用另一个工作簿中的宏取消隐藏所有工作表。但是,如果用户非常熟练,他们总是可以始终进入你的文件中。注意:为防止某些事件循环问题,此代码需要覆盖Excel内置的Save事件,并且还需要复制Excel的“工作簿已更改,您要保存”提示和操作,代码负责所有这些工作。但是,在关闭文件时确实会产生一个非常小的问题。如果用户尝试退出该应用程序,它将关闭工作簿,而不是Excel。再次退出将完全关闭Excel。
fanjy
2021/05/07
2.6K0
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.7K0
Excel VBA编程
Excel实战技巧78: 创建个人宏工作簿
个人宏工作簿是一个文件,可以在应用程序开启时运行其中的VBA代码,就像是运行功能区选项卡中的命令一样。创建个人宏工作簿很简单,如下所示。
fanjy
2020/05/25
3.3K0
Excel实战技巧78: 创建个人宏工作簿
VBA实战技巧20:选取不同工作表中不同单元格区域时禁止用户执行复制剪切粘贴操作
在《VBA实战技巧19:根据用户在工作表中的选择来隐藏/显示功能区中的剪贴板组》中,我们讲解了根据用户在工作表中的选择来决定隐藏或者显示功能区选项卡中的特定组的技术。在这里就要派上用场了。
fanjy
2021/03/12
2.4K0
Vba菜鸟教程[通俗易懂]
官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/overview/language-reference 代码完成后:工具-vbaproject属性-保护-查看时锁定-密码
全栈程序员站长
2022/09/05
17.7K0
Vba菜鸟教程[通俗易懂]
Excel实战技巧83: 制作动态的笑脸图
这是在contexturesblog.com中看到的一个技巧,非常有意思,稍作整理和修改,在这里和大家分享。
fanjy
2020/07/14
1.2K0
VBA: 禁止单元格移动,防止单元格公式引用失效
文章背景: 在工作生活中,存在文件共享的情况。在数据处理时,单元格公式中往往要引用原始数据源。多人操作时,每个人的操作习惯不同,如果数据源的单元格不小心被人为移动或删除,会导致单元格公式引用失效,产生#REF! 错误。如果进行的是跨表引用,这种错误往往还很难发现。
Exploring
2022/09/20
8320
Excel实战技巧59: 使用VBA让用户仅能在指定单元格或单元格区域中输入数字
通常,我们可以使用Excel的“数据验证”功能来设置指定单元格或单元格区域仅能输入指定范围的整数或者小数,如下图1所示。
fanjy
2019/11/07
2.6K1
Excel实战技巧59: 使用VBA让用户仅能在指定单元格或单元格区域中输入数字
将单元格作为累加器
累加器是一个或多个单元格,用于保存输入的数值的总和。它们可以是单个单元格,如果A1=6,并且用户在A1中输入2,则显示的结果为8。或者可以是两个单元格,比如说,在A1中输入的数字会立即与B1中的值相加。
fanjy
2023/12/11
2510
将单元格作为累加器
VBA技巧:记住单元格更改之前的值
当工作表单元格中的值被修改后,我需要将修改前的值放置到其右侧单元格中。例如,单元格A1中输入有数值1,当我将其内容修改为2之后,之前的数值1被放置到单元格B2中。可以使用工作表Change事件来实现。
fanjy
2024/03/26
6640
VBA技巧:记住单元格更改之前的值
Excel宏教程 (宏的介绍与基本使用)
大家好,又见面了,我是你们的朋友全栈君。 Excel宏教程 (宏的介绍与基本使用) Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。但excel的强大远远超过人们的想象–宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。 随着支持Windows的应用程序的不断增多和功能的不断增强,越来
全栈程序员站长
2022/08/23
6.9K0
啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Range属性
引言:本文学习整理自powerspreadsheets.com,讲解得很细致,一些知识点反复强调,对于熟悉VBA的朋友来说,感觉有点啰嗦,但是对于VBA初学者来说,对快速掌握Range对象的引用,却很有好处。
fanjy
2022/01/07
6.9K0
啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Range属性
VBA实战技巧26:使用递归确定所有的引用单元格
在Excel中,经常存在一个单元格引用另一个单元格中,而另一个单元格又引用其他单元格的情形。如何使用VBA代码编程确定指定单元格的所有引用单元格呢?
fanjy
2021/07/12
1.5K0
VBA实战技巧26:使用递归确定所有的引用单元格
推荐阅读
相关推荐
EXCEL VBA语句集300
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验