Excel VBA 阻止我粘贴值

  • 本文关键字:阻止我 VBA Excel vba excel
  • 更新时间 :
  • 英文 :


我制作了一个宏来计算所选内容的 STDEV 并将其放在状态栏中,因此每当更改选择时都会调用。但是,它具有意外的效果,即阻止我在复制范围时将值粘贴到任何位置。我可以复制,但是当我单击其他地方粘贴时,粘贴按钮变灰,我失去了选择。如何取回我的糊状物?最好通过更改宏而不是添加新宏。

这是代码:

Public st As Double
Public rng as Range
Sub stdev()
On Error Resume Next
st = Application.WorksheetFunction.stdev(rng)
If Err.Number <> 0 then
    st = 0
End If
Application.DisplayStatusBar = True
Application.StatusBar = "Stdev: " & st
End Sub

然后:

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
Set rng = Target
Call stdev
End Sub

如果你改变怎么办

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
Set rng = Target
Call stdev
End Sub

Private Sub Worksheet_SelectionChagne(ByVal Target as Range)
If Application.CutCopyMode = 1 Then Exit Sub
Set rng = Target
Call stdev
End Sub

这应该在你复制和粘贴某些东西时绕过你的子例程,而不必添加更多的代码。

调用Application.DisplayStatusBar是清除办公室剪贴板的原因。您可以完全删除该行或使用

Sub stdev()
On Error Resume Next
st = Application.WorksheetFunction.stdev(rng)
If Err.Number <> 0 Then
    st = 0
End If
If Not Application.DisplayStatusBar Then Application.DisplayStatusBar = True
Application.StatusBar = "Stdev: " & st
End Sub

这样,只有在状态栏未显示时,它才会清除剪贴板。

最新更新