gpt4 book ai didi

excel - 如何防止Excel关闭复制选框

转载 作者:行者123 更新时间:2023-12-02 02:03:26 25 4
gpt4 key购买 nike

通常使用 Excel,当用户选择一个范围并将其复制到剪贴板时,您会注意到它会激活源范围周围的选取框,有些人将此动画称为“行进的 Ant ”选取框。出于我的目的,我使用键盘快捷键 Ctrl-T 创建了一个简单的 VBA 脚本,该脚本获取剪贴板范围并将其值和格式特殊粘贴到新选择的目标范围中。 (跳过它的备忘录和我不需要粘贴到新范围的此类属性)。

如果我想添加到 VBA 脚本并使其右对齐目标范围文本,就会出现问题。问题是,在我将代码添加到右对齐之后,它会关闭选取框并禁用源范围的剪贴板内容,以便将来按 Ctrl-T(我的宏)热键进入更多目标范围。如果我不在 VBA 末尾添加额外的代码,那么我可以继续将源范围粘贴到电子表格中的许多目标范围中,而无需重新选择我想要粘贴的原始源范围/单元格电子表格。

简单的解决方案是重新选择目标范围并将其复制到剪贴板中,但这不起作用,因为在我的情况下,源选择是单个单元格,而目标单元格将是所有不同的范围。

这是有问题的代码:

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
With Selection
.HorizontalAlignment = xlRight
End With

感谢您的帮助。

最佳答案

好吧,我没想到我会这么快得到答案,因为有人指出 Excel 不允许您获取原始范围坐标。是的,我相信这是真的,令人遗憾的是我们不能做那么容易的事情,但作为程序员,我们必须做出应有的努力。这是我的问题的解决方案,希望对其他人有帮助:

只需更改复制键盘快捷键 Ctrl-C 的默认特性,并将其替换为您自己的子例程,该子例程执行标准复制,但还将对象保存到全局变量中。这样,无论任何子例程进程是否关闭选取框并清除剪贴板内容,我们的自定义键盘热键序列都可以在以后根据需要多次访问它。

在同一个 VBA 模块中,我同时具有复制和粘贴特殊子例程,我创建了 2 个包含源对象和目标对象的全局变量。

这是工作代码:

Public SourceCell As Range
Public DestinationCell As Range
Sub MyCopy()
'
' MyCopy Macro (Make sure to set the macro shortcut option to Ctrl-C)
'

Set SourceCell = Selection
Selection.Copy

End Sub

Sub MyPaste()
'
' MyPaste Macro (Make sure to set the macro shortcut option to Ctrl-T or our choice)
'
Set DestinationCell = Selection
SourceCell.Select
Selection.Copy
DestinationCell.Select
'You can substitute your own paste code here
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
With Selection
.HorizontalAlignment = xlRight
End With
'The two lines below are not necessary for our custom paste hotkey but It:
'1) Recreates the marquee for standard Ctrl-V paste operations
'2) Shows you what your original selection was in case you forgot
SourceCell.Select
Selection.Copy
'Then add the following line so the screen doesn't shift back to source cell
DestinationCell.Select
End Sub

所以基本上,上面的 VBA 模块添加将允许您使用 Ctrl-C 复制范围,使用 Ctrl-T 粘贴值和格式,然后它会自动右对齐。请记住,您想要粘贴的内容的过程是用户可以修改的。

感谢 stackoverflow 让我留下笔记...

关于excel - 如何防止Excel关闭复制选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com