2015-06-18 2 views
2

Я работаю над модулем, который использует событие onkey, чтобы определить, будет ли нажата кнопка backspace или delete, если она соответствует критериям для события, соответствующие ячейки очистят содержимое.Application.OnKey Ошибка процедуры - Не удается запустить макрос

у меня есть процедура для запуска соответствующего югу, но я получаю сообщение об ошибке «макрос не может быть найден»

Я приложил изображение ошибки и код ниже, любые предложения?

Изображение ошибки enter image description here

Код

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If ActiveCell.Column = 2 Then 
    Application.OnKey Key:="{DEL}", Procedure:="DeleteResources" 
    Application.OnKey Key:="{BACKSPACE}", Procedure:="DeleteResources" 
End If 
End Sub 

Public Sub DeleteResources() 
ActiveCell.Offset(, 1).ClearContents 
ActiveCell.Offset(, 2).ClearContents 
ActiveCell.Offset(, 3).ClearContents 
End If 
End Sub 
+0

Наклонение до истечения срока – PootyToot

ответ

2

Вам нужно положить DeleteResources в код Module так, что он имеет полную общественную сферу, особенно при использовании позднего связывания имена процедур.

Кроме того, вам необходимо удалить дополнительные End If у вас в этом методе.

2

Подобно тому, как FYI, так как у вас уже есть рабочее решение, вы на самом деле не двигаться рутину, вам просто нужно предварить имя с кодовым названием контейнерного модуля:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim sProc As String 
    sProc = Me.CodeName & ".DeleteResources" 
    If ActiveCell.Column = 2 Then 
     Application.OnKey Key:="{DEL}", Procedure:=sProc 
     Application.OnKey Key:="{BACKSPACE}", Procedure:=sProc 
    End If 
End Sub 

Public Sub DeleteResources() 
    ActiveCell.Offset(, 1).Resize(, 3).ClearContents 
End Sub 
Смежные вопросы