我曾经建立了一个VBA按钮,自动锁定所有细胞中数据的所有单元格。它的工作完美。现在我想将该按钮复制到另一个工作表中。于是我创建了另一个按钮,复制并粘贴了整个VBA,然后编辑了工作表名称和范围。而且,它只能在5%的时间内工作,其余时间,我得到了“运行时错误'1004':没有找到细胞。”我已经尝试了一些固定的,将Sheets更改为Worksheets,或者添加“,23”到specialcells参数。然而,现在没有任何工作。当我尝试加入时,有时会说rng和lckrng都是空的,有时候只显示锁定为空,而不显示rng。问题在于它曾经是一个工作代码,现在它仍然可以工作大约5%的时间。任何想法为什么?非常感谢你!Excel的VBA代码,以选择具有数据有时工作
Private Sub CommandButton1_Click()
Dim rng As Range
Dim lockrng As Range
Sheets("Uploading Checklist (M)").Unprotect Password:="signature"
Set rng = Range("A1:M14")
'Selecting hardcoded data and formulas
Set lockrng = Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas))
lockrng.Locked = True
Sheets("Uploading Checklist (M)").Protect Password:="signature"
End Sub
我想测试一下。在我开始之前,我猜你已经排除了格式不一致等问题(尽管如果将SpecialCells中的第二个参数留空,它应该选择所有单元格,而不考虑格式)以及有关范围的任何内容是不连续的? – neophlegm
你有没有检查过你是否在该范围内有两个常量和公式(即它不是全部常量或所有公式)? – YowE3K
另外,作为一种思路:如果你在联盟有30多个不连续区域作为参数,我不知道你会得到一个错误:[https://msdn.microsoft.com/VBA/Excel-VBA/articles/应用程序联合法-Excel中](https://msdn.microsoft.com/VBA/Excel-VBA/articles/application-union-method-excel) – neophlegm