Excel VBA阻止我粘贴值

时间:2016-06-13 16:34:46

标签: excel vba excel-vba

我创建了一个宏来计算选择的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

2 个答案:

答案 0 :(得分:1)

如果您更改

,该怎么办?
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

在复制和粘贴内容时,应该绕过子程序,而不必添加更多代码。

答案 1 :(得分:0)

调用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

这样,如果状态栏没有显示,它只会清除剪贴板。