2016-06-13 5 views
1

Я сделал макрос, который вычисляет STDEV выбора и помещает его в строку состояния, и поэтому вызывается всякий раз, когда выбор изменяется. Однако у него есть непреднамеренный эффект, который мешает мне вставлять значения где-нибудь, когда я копирую диапазон. Я могу скопировать, но затем, когда я нажимаю в другом месте, чтобы вставить кнопку вставки, становится серым, и я теряю выделение. Как мне вернуть свою пасту? Предпочтительно, изменяя макрос, но не добавляя новые.Excel VBA не позволяет мне вставлять значения

Вот код:

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 

ответ

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 

Это должно обойти вашу подпрограмму, пока вы копируете и вставляете что-то, не добавляя намного больше кода.

+0

Amazing. Это сработало. Спасибо огромное! FYI вам нужно добавить End If –

+0

@farazmasroor Оператор if - это одна строка, поэтому он должен обрабатываться без End If или, по крайней мере, когда я его тестирую. Рад узнать, что это работает иначе. – Malil

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 

Таким образом, было бы только очистить буфер, если строка состояния не отображается.

Смежные вопросы