让我们来看看简单的 Excel 文件作为我的问题的一个示例。请注意,它包含排列宏 VBA 脚本。
我希望 B 列中的单元格对键盘输入来说是只读/不可更改的,即我们无法通过从键盘输入值来更新单元格。但这些值可以通过运行宏来更新MyPermute
我如何到那里?
答案1
首先,编写一个保护宏来保护输入
Sub protect()
Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True
End Sub
- 接下来进入
review - unprotect sheet
并输入密码以取消保护 - 现在去
review - allow users to edit ranges
- 单击
new
并定义您希望用户能够编辑 - 单击
permissions
然后add
输入对象名称Everyone
- 现在退出 确定 - 确定 - 确定
- 运行
Protect
宏来保护除定义范围之外的所有内容。 修改你的宏来解锁、操作、锁定(这适用于任何宏)
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