通过office软件辅助能直接运行一个宏或函数但有时几个宏是相互关联的,需要插入模块,将代码复制进去后再运行、调用。比如:
' 声明全局变量存储撤销数据(需放在模块顶部)Dim UndoSource As RangeDim UndoSourceData As VariantDim UndoTarget As RangeDim 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 = UndoSourceDataEnd 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 = NothingEnd Sub
Sub Auto_Open() Application.OnKey "^+X", "QuickMoveWithUndo" ' Ctrl+Shift+X 移动 Application.OnKey "^+Z", "UndoLastMove" ' Ctrl+Shift+Z 撤销End Sub
上面这段vba需要插入模块中再运行,Quicker能实现快捷插入模块并运行吗?
Qiu Cool
最后更新于 2025/3/17