通过office软件辅助能直接运行一个宏或函数
但有时几个宏是相互关联的,需要插入模块,将代码复制进去后再运行、调用。比如:
' 声明全局变量存储撤销数据(需放在模块顶部)
Dim UndoSource As Range
Dim UndoSourceData As Variant
Dim UndoTarget As Range
Dim UndoTargetData As Variant
Sub QuickMoveWithUndo()
Dim src As Range, dst As Range
' 使用当前选区作为源区域
Set src = Selection
If src Is Nothing Then Exit Sub
' 获取目标起始单元格
On Error Resume Next
Set dst = Application.InputBox("请点击目标起始单元格", "目标位置", Type:=8)
If dst Is Nothing Then Exit Sub
' ==== 核心操作 ====
' 1. 备份源数据和目标区域原始数据
Set UndoSource = src
UndoSourceData = src.Value
Set UndoTarget = dst.Resize(src.Rows.Count, src.Columns.Count)
UndoTargetData = UndoTarget.Value
' 2. 执行移动操作
src.ClearContents
UndoTarget.Value = UndoSourceData
End Sub
Sub UndoLastMove()
If UndoSource Is Nothing Then Exit Sub
' 还原操作
Application.ScreenUpdating = False
UndoSource.Value = UndoSourceData ' 还原源数据
UndoTarget.Value = UndoTargetData ' 还原目标区域原始数据
Application.ScreenUpdating = True
' 清空撤销缓存
Set UndoSource = Nothing
Set UndoTarget = Nothing
End Sub
Sub Auto_Open()
Application.OnKey "^+X", "QuickMoveWithUndo" ' Ctrl+Shift+X 移动
Application.OnKey "^+Z", "UndoLastMove" ' Ctrl+Shift+Z 撤销
End Sub
上面这段vba需要插入模块中再运行,Quicker能实现快捷插入模块并运行吗?