如何在Excel中获取下拉菜单的上一次选择值并写入指定单元格
实现D10下拉修改后D12显示上一次值的方案
你可以通过Excel VBA的工作表事件实现该需求,操作步骤如下:
- 打开你需要设置的Excel文件,按
Alt + F11唤起VBA编辑器 - 在左侧工程资源管理器中,找到对应功能所在的工作表,双击进入该工作表的代码编辑页面
- 将以下代码粘贴到编辑区域:
' 声明模块级变量存储D10的上一次值 Dim oldD10Val As Variant ' 激活工作表时初始化D10的当前值为旧值 Private Sub Worksheet_Activate() oldD10Val = Me.Range("D10").Value End Sub ' 监听单元格修改事件 Private Sub Worksheet_Change(ByVal Target As Range) ' 仅判断修改的是D10单元格时执行逻辑 If Target.Address = "$D$10" Then ' 关闭事件触发,避免修改D12时循环触发事件 Application.EnableEvents = False ' 将上一次的旧值写入D12 Me.Range("D12").Value = oldD10Val ' 更新旧值为本次修改的新值,供下一次修改时使用 oldD10Val = Target.Value ' 恢复事件触发 Application.EnableEvents = True End If End Sub
- 关闭VBA编辑器,将文件保存为启用宏的工作簿(.xlsm格式),否则后续打开文件时宏代码不会生效
- 回到工作表,首次切换到该工作表时会自动记录D10的当前值作为初始旧值,之后每次修改D10的下拉选项,D12都会自动显示上一次的旧值
如果你需要自定义初始旧值,直接修改
Worksheet_Activate事件中的赋值语句即可,比如设置初始旧值为JAN:oldD10Val = "JAN"

内容的提问来源于stack exchange,提问作者Sain
相关产品推荐
相关产品推荐

