View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Mike H Mike H is offline
external usenet poster
 
Posts: 11,501
Default Prevent Coloumn & Row Deletion / Insertion

Craig,

Glad i could help, see my other post for the password bit
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"Craig" wrote:

Mike,

Excellent, works perfectly, many thanks, but how do I gain access to delete
/ add...its probably blindingly obvious, sorry if daft question

Craig

"Mike H" wrote:

Craig,

Modified to work for rows and columns on all sheeets

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Msg As String
Msg = "Deleting Rows/Columns Not Permitted"
If Target.Address = Target.EntireRow.Address Or _
Target.Address = Target.EntireColumn.Address Then
With Application
.EnableEvents = False
.Undo
Msg = MsgBox(Msg, 16, "WARNING")
.EnableEvents = True
End With
Else
Exit Sub
End If
End Sub

--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"Craig" wrote:

Hi,

Is there a code to prevent users from deleting rows or columns in all the
sheets within a workbook, but allowing an authorised user (me), to input a
password to then carryout deletion / insertion.

I have a number of users who have access to the password to unprotect the
sheet for editing....the vba password is known only to two of us and i want
to stop my colleagues from 'accidentally' changing things without my being
asked.

I have used a variation of this so far (thanks to John for the post) but
need to expand as stated above:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "Sheet2" Then

If Target.Address = Target.EntireRow.Address Then

With Application

.EnableEvents = False

.Undo

msg = MsgBox("Deleting Rows Not Permitted", 16, "WARNING")

.EnableEvents = True

End With

Else

Exit Sub

End If
End If

End Sub