2011-10-14 6 views
1

ユーザーが式を変更できないように保護したいテンプレートファイルがあります。シートが保護されているので、ユーザーが行を挿入できるようにマクロを書きました。また、ユーザーが行を削除できるようにするマクロが必要ですが、ユーザーが特定の重要な行(例:合計と見出しの確認など)を削除しないようにします。その行のセルの内容に基づいて特定の行を削除できないようにする

この目的を達成するために、私は削除することはできません行を識別するために私のテンプレートの列Lを使用していました。これらの行のために私は、私は以下の基本的な削除マクロを書いたコラムL.の行のワード"keep"を持っているが、私は言葉"keep"がある場合は、選択した範囲rRangeExit Subの列Lで見て、それを修正する必要があります。

*は、それらの行のいずれかがテストに失敗した場合、マクロが終了する必要がありますので、rRangeは、隣接する行の数が含まれている可能性があることに注意してください。

Sub DeteteRows() 

Dim rRange As Range 
On Error Resume Next 
    Application.DisplayAlerts = False 
    Set rRange = Application.InputBox(Prompt:= _ 
      "Please use mouse to select a row to Delete.", _ 
       Title:="SPECIFY ROW TO DELETE", Type:=8) 
On Error GoTo 0 
    Application.DisplayAlerts = True 
    If rRange Is Nothing Then 

    Exit Sub 

    Else 

rRange.EntireRow.Delete 
Range("a1").Select 

MsgBox ("Row(s) Deteted") 
    End If 

End Sub 

答えて

0

これは最良の方法ではありませんが、以下のとおりです。私はあなたが扱うことができる考え出しように私はその後、他の場合は、最後に、削除部分を追加していないこと

Sub DeteteRows() 
Dim rRange As Range 
Dim bKeepFound As Boolean 
bKeepFound = False 
On Error Resume Next 
Application.DisplayAlerts = False 
Set rRange = Application.InputBox(Prompt:= _ 
"Please use mouse to select a row to Delete.", _ 
Title:="SPECIFY ROW TO DELETE", Type:=8) 
On Error GoTo 0 
    Application.DisplayAlerts = True 
    If rRange Is Nothing Then 
     Exit Sub 
     'dont need the else statement cause you exit the sub if it fails 
    End If 

    For Each Row In rRange.Rows 
    Dim s 'variable to hold the array 
    s = Split(Row.Address, ":") 'split out the column and row 
     'remove the $ and convert to a number then check the cell value 
     If rRange.Cells(CInt(Replace(s(0), "$", "")), 12).Value = "keep" Then 
      bKeepFound = True 
     End If 
    Next Row 
    'check to see if a row was found to keep 
    If bKeepFound Then 
     Exit Sub 'row was found so exit sub 
    Else 
     'delete the rows in the range 
    End If 

End Sub 
関連する問題