2012-06-02 2 views
0

Я узнал, что мне нужно написать макрос, если я хочу, чтобы пользователи удаляли строки на защищенном листе.excel vba - protetcted sheet delete row

Это код, который я получил прибегая к помощи вокруг:

Sub delete_row() 
    ActiveSheet.Unprotect Password:="justme" 
     ActiveCell.EntireRow.Delete 
    ActiveSheet.Protect Password:="justme" 
End Sub 

Где именно я должен разместить этот код? Будет ли он работать, если удалить несколько строк и т. Д.?

MrExcel сегодня не работает, поэтому ограниченные возможности.

+0

Это зависит от того, как вы хотите расширить функциональность для пользователя. Вы хотите, чтобы пользователь выбирал строки, которые необходимо удалить? –

+0

@SiddharthRout да, как они обычно делают это на excel – TPR

ответ

0

Вставить это в модуле

Option Explicit 

Sub DeleteMe() 
    Dim Ret As Range, Cl As Range 

    On Error Resume Next 
    Set Ret = Application.InputBox("Please select the Cells", "Delete Rows", Type:=8) 
    On Error GoTo 0 

    ActiveSheet.Unprotect Password:="justme" 

    If Not Ret Is Nothing Then Ret.EntireRow.Delete 

    ActiveSheet.Protect Password:="justme" 
End Sub 

При запуске выше макрос, то он будет просить вас, чтобы выбрать ячейку (ы). Независимо от того, какие ячейки вы выберете, вся строка будет удалена.

+0

нет способа убрать excel's delete? Смысл они выбирают строки и нажимают удаление (или щелкните правой кнопкой мыши и выберите delete), и это будет захвачено vba? – TPR

+0

Существует альтернатива :) Назначьте ярлык для указанного макроса. Таким образом, все, что нужно сделать пользователю, это нажать клавишу быстрого доступа, и приведенный выше код будет запущен :) –

+0

, вы так замечательны. Вот что я думал: должен быть другой путь. Можете ли вы указать мне на назначение макроса ярлыку? http://kb.iu.edu/data/ahbm.html это достаточно хорошо? – TPR