Excel VBA阻止我粘贴值

我做了一个macros来计算一个select的STDEV,并把它放在状态栏,所以每当select被改变时被调用。 但是,当我复制一个范围时,它具有阻止我粘贴任何值的意想不到的效果。 我可以复制,但是当我点击其他地方粘贴粘贴button变灰,我失去了select。 我怎样把我的贴回来? 最好通过改变macros而不是增加新macros。

这里是代码:

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 

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