A couple of low-importance questions from me.
1. Why do you prefix your variables with the character "x"? I'm not quite seeing what benefit this provides.
2. What does the "Sft" in "xSft1" and "xSft2" stand for?
In some cases, you may want to encrypt some cells for preventing the cells viewed by other users, how can you get it done quickly? Now in this article, I introduce the tricks to quickly encrypt and decrypt selected cell contents in Excel.
Here is a VBA code that can quickly encrypt or decrypt selected cells in Excel.
1. Press Alt + F11 keys to display Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste below VBA code to the new Module window.
VBA: Encrypt or decrypt selected cells.
Private Function StrToPsd(ByVal Txt As String) As Long 'UpdatebyKutoolsforExcel20151225 Dim xVal As Long Dim xCh As Long Dim xSft1 As Long Dim xSft2 As Long Dim I As Integer Dim xLen As Integer xLen = Len(Txt) For I = 1 To xLen xCh = Asc(Mid$(Txt, I, 1)) xVal = xVal Xor (xCh * 2 ^ xSft1) xVal = xVal Xor (xCh * 2 ^ xSft2) xSft1 = (xSft1 + 7) Mod 19 xSft2 = (xSft2 + 13) Mod 23 Next I StrToPsd = xVal End Function Private Function Encryption(ByVal Psd As String, ByVal InTxt As String, Optional ByVal Enc As Boolean = True) As String Dim xOffset As Long Dim xLen As Integer Dim I As Integer Dim xCh As Integer Dim xOutTxt As String xOffset = StrToPsd(Psd) Rnd -1 Randomize xOffset xLen = Len(InTxt) For I = 1 To xLen xCh = Asc(Mid$(InTxt, I, 1)) If xCh >= 32 And xCh <= 126 Then xCh = xCh - 32 xOffset = Int((96) * Rnd) If Enc Then xCh = ((xCh + xOffset) Mod 95) Else xCh = ((xCh - xOffset) Mod 95) If xCh < 0 Then xCh = xCh + 95 End If xCh = xCh + 32 xOutTxt = xOutTxt & Chr$(xCh) End If Next I Encryption = xOutTxt End Function Sub EncryptionRange() Dim xRg As Range Dim xPsd As String Dim xTxt As String Dim xEnc As Boolean Dim xRet As Variant Dim xCell As Range On Error Resume Next xTxt = ActiveWindow.RangeSelection.Address Set xRg = Application.InputBox("Select a range:", "Kutools for Excel", xTxt, , , , , 8) Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange) If xRg Is Nothing Then Exit Sub xPsd = InputBox("Enter password:", "Kutools for Excel") If xPsd = "" Then MsgBox "Password cannot be empty", , "Kutools for Excel" Exit Sub End If xRet = Application.InputBox("Type 1 to encrypt cell(s);Type 2 to decrypt cell(s)", "Kutools for Excel", , , , , , 1) If TypeName(xRet) = "Boolean" Then Exit Sub If xRet > 0 Then xEnc = (xRet Mod 2 = 1) For Each xCell In xRg If xCell.Value <> "" Then xCell.Value = Encryption(xPsd, xCell.Value, xEnc) End If Next End If End Sub
3. Then press F5 key to execute the VBA, and a dialog pops out for selecting cells to encrypt. See screenshot:
4. Then click OK and enter password for the encrypted cells in another popped out dialog. See screenshot:
5. Click OK, and then in the third dialog, type 1 to encrypt selected cells, if you want to decrypt cells, enter 2. See screenshot:
6. Click OK, and the selected cells are encrypted. See screenshot:
With above method to encrypt or decrypt cells is a little complex, but if you have Kutools for Excel installed, you can use Encrypt Cells and Decrypt Cells utilities to quickly get it done.
|Kutools for Excel, with more than 300 handy functions, makes your jobs more easier.|
After free installing Kutools for Excel, please do as below:
1. Select the cells you want to encrypt, and click Kutools Plus > Encrypt Cells. See screenshot:
2. Then enter and confirm the password in the Encrypt Cells dialog, and choose one encrypting type in the Mask section. See screenshot:
3. Click Ok or Apply, and now the selected cells are encrypted.
If you need to decrypt the cells, select them and click Kutools Plus > Decrypt, and enter the password to decrypt them. See screenshot: