剪贴板 自动调整VBA按钮大小时"copy"选择消失了?



我很困惑,当创建一个自动大小按钮时,Excel会无缘无故地丢弃剪贴板"复制"选项。

考虑这个简单的选择更改处理程序:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    Dim P As Button: Set P = ActiveSheet.Buttons.Add(1, 1, 100, 100)
End Sub

这简单地在每个单元格选择更改时在工作表的左上角创建一个哑按钮。

如果你在任何单元格中按下Ctrl-C(不管它是否为空),单元格将有这个漂亮的边框,表明如果你在其他地方选择粘贴,所选择的内容将被粘贴。

即使在工作表上进行导航,该边框也将保持可见。

现在添加一行:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    Dim P As Button: Set P = ActiveSheet.Buttons.Add(1, 1, 100, 100)
    P.AutoSize = True
End Sub

这将使按钮自动调整大小。工作很好。但是从现在开始,每次选择的改变都会破坏剪贴板的"复制"选择。

  • 为什么?我能防止这种情况发生吗?

用Excel 10 14.0.7116.5000 32位复制:-O

如果你已经复制了内容,那么你需要在其他事情发生之前粘贴它。这是Excel的自然行为。

因此,在您的事件中,您可以在自动调整按钮大小之前粘贴内容(到当前活动单元格)。

Dim P As Button
If Application.CutCopyMode = xlCopy Then
    Me.Paste
End If
Set P = ActiveSheet.Buttons.Add(1, 1, 100, 100)
'Application.EnableEvents = False
P.AutoSize = True
'Application.EnableEvents = True

EnableEvents在这里是不必要的,但我包含它是为了说明如何防止事件第二次触发。您可能需要在某些时候使用它

相关内容

  • 没有找到相关文章

最新更新