如何使 Excel 单元格的值无法通过键盘输入改变其值

如何使 Excel 单元格的值无法通过键盘输入改变其值

让我们来看看简单的 Excel 文件作为我的问题的一个示例。请注意,它包含排列宏 VBA 脚本。

我希望 B 列中的单元格对键盘输入来说是只读/不可更改的,即我们无法通过从键盘输入值来更新单元格。但这些值可以通过运行宏来更新MyPermute

我如何到那里?

答案1

首先,编写一个保护宏来保护输入

Sub protect()

Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True

End Sub
  1. 接下来进入review - unprotect sheet并输入密码以取消保护
  2. 现在去review - allow users to edit ranges
  3. 单击new并定义您希望用户能够编辑
  4. 单击permissions然后add输入对象名称Everyone
  5. 现在退出 确定 - 确定 - 确定
  6. 运行Protect宏来保护除定义范围之外的所有内容。
  7. 修改你的宏来解锁、操作、锁定(这适用于任何宏)

    Sub MyPermute()
    Dim rng As Range
    Set rng = Range("A1:A10")
    
    Dim varValues As Variant
    Dim i As Long, j As Long, n As Long
    
    Worksheets("sheet1").Unprotect "Password"
    
    varValues = rng.Cells
    n = UBound(varValues, 1)
    For ii = 1 To 100
        i = MyRandomNum(1, n)
        j = MyRandomNum(1, n)
        subSwap varValues, i, j
    Next ii
    
    Range("B1:B10") = varValues
    
    Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True
    
    End Sub
    

修改后的 excel 文件

相关内容