May 01 2022 06:50 AM
I have an Excel table containing a number of columns with formulas. I insert new rows at the top to keep the most current rows first. I normally insert new rows at row 3, but may insert below there as needed to enter missed data. Row two is hidden to address formatting issues when inserting next to the header row. I need to protect all the formulas while allowing insertions and edits to the non-formula columns.
I understand that doing so with tables may be different than doing so with normal spread sheets. How would this be done.
May 01 2022 09:45 AM
SolutionYour message does not show which Excel version, operating system and storage medium it is. Nevertheless, here is a small VBA example of how it could work.
Option Explicit
Sub ProtectMe()
Dim r As Range
Dim myPass As String
Dim wKs As Worksheet
myPass = "1234"
For Each wKs In ActiveWorkbook.Worksheets
With wKs
On Error GoTo myErrPass
.Unprotect myPass
On Error Resume Next
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas, 23).Locked = True
On Error GoTo 0
.Protect myPass
End With
Next wKs
End
myErrPass:
MsgBox ("Abort - Wrong password")
End
End Sub
Hope I was able to help you with this info.
I know I don't know anything (Socrates)
May 01 2022 10:05 AM
May 01 2022 11:07 AM
Here is a file with the code so you can see how it is inserted.
Steps:
Press the Alt + F11 key combination to open the VBA development
environment window
Open the project explorer with the key combination Ctrl + R
and activate there double-click on the desired file, it is then
highlighted in blue now double-click on "this workbook" below this file
now the code window of "this workbook" is in the right half of the window.
The code can be inserted into this
save and close Visual Basic with key combination Alt + F4
the macro is now available in the file
Additional Info:
Getting started with VBA in Office
VBA code "behind" a worksheet or a workbook may not work in Excel
Hope I was able to help you :).
I know I don't know anything (Socrates)
Was the answer useful? Mark them as helpful!
This will help all forum participants.
May 01 2022 12:12 PM - edited May 01 2022 12:13 PM
OK. I have created the VBA code as indicated and saved it as an xlsm. How do I activate the code?
Are those leading "."s on some of the code lines valid?
If the workbook is not password protected, I presume I can say MyPass = ""
May 02 2022 05:25 AM
I have created the VBA code as indicated and saved it as an xlsm. How do I activate the code?
You don't need to do anything to activate it, just opening the worksheet activates the code.
Are those leading "."s on some of the code lines valid?
in VBA the dot at the beginning of an expression has the following function:
If an object was specified with a WITH command in the previous code, you can replace this object with the dot in the following.
ie:
Code:
With Sheets("Sheet1")
.Cells(1,1).Clear
End With
stands for:
Code:
Sheets("Sheet1").Cells(1,1).Clear
this saves a lot of typing for frequently used objects.
If the workbook is not password protected, I presume I can say MyPass = ""
there you can use your own password instead of 1234.
I wish you continued success with Excel
May 02 2022 06:32 AM
May 01 2022 09:45 AM
SolutionYour message does not show which Excel version, operating system and storage medium it is. Nevertheless, here is a small VBA example of how it could work.
Option Explicit
Sub ProtectMe()
Dim r As Range
Dim myPass As String
Dim wKs As Worksheet
myPass = "1234"
For Each wKs In ActiveWorkbook.Worksheets
With wKs
On Error GoTo myErrPass
.Unprotect myPass
On Error Resume Next
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas, 23).Locked = True
On Error GoTo 0
.Protect myPass
End With
Next wKs
End
myErrPass:
MsgBox ("Abort - Wrong password")
End
End Sub
Hope I was able to help you with this info.
I know I don't know anything (Socrates)