![为什么粘贴到 Excel 中未受保护的单元格会保护它?](https://linux22.com/image/1305671/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%B2%98%E8%B4%B4%E5%88%B0%20Excel%20%E4%B8%AD%E6%9C%AA%E5%8F%97%E4%BF%9D%E6%8A%A4%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%E4%BC%9A%E4%BF%9D%E6%8A%A4%E5%AE%83%EF%BC%9F.png)
在研究答案时这个问题,我偶然发现 Excel 中与受保护的工作表中未受保护的单元格有关的一个相当奇怪的行为。
要了解我的意思,请创建一个新的工作簿,取消保护其第一个单元格(A1)并保护工作表。现在唯一可以输入文本的单元格应该是 A1。接下来转到其他应用程序(例如浏览器)并从那里复制一些文本。单击一次选择第一个单元格(不要双击或粘贴到公式栏中)并将文本粘贴到其中。
这不仅可能会改变单元格的格式,还会设置其受保护标志。此后,除非删除工作表的保护(或撤消粘贴操作),否则无法再次更改该单元格的内容。
这是为什么?这是期望的行为还是 Excel 2010(我用来尝试此操作的版本)中的错误?
答案1
这实际上是预期的行为(微软很期待,但用户不一定期待),这是个好消息。而且有一个相当简单的解决方法,这更是好消息。
当您粘贴一段格式化的文本时,单元格将获得“普通”样式,然后在其上分层显示所需的格式。默认情况下,“普通”样式的保护设置为锁定。这就是应用它的原因。
解决方案是修改“普通”样式。要复制此问题的已解决版本,请创建一个新的工作簿,然后:
1) 在“主页”功能区中的“样式”部分,右键单击“常规”框,然后单击“修改”。按“格式”按钮,然后在“保护”选项卡上取消选中“锁定”。(请记住,这仅适用于此电子表格,但现在所有单元格都将不受保护,而不是受保护)。
2)选择所有单元格,右键单击并选择格式化单元格,然后在保护下选中锁定。
3)仅选择 A1,右键单击,选择格式化单元格,然后在保护下取消选中锁定。
4)保护工作表
现在我们应该回到问题中的例子,即锁定和解锁单元格,但采用不同的普通样式。
现在,当我从 Word 或其他地方粘贴文本时,单元格不会受到保护。
答案2
我不知道为什么会发生这种情况,但就我而言,这是一个很大漏洞。 :-(
看起来,每当 Excel 尝试粘贴文本格式和文本时,它都会重新锁定单元格。如果您选择Match Destination Formatting
粘贴选项;从纯文本编辑器(如记事本)粘贴;或从同一 Excel 实例中的另一个工作簿粘贴,则单元格之后仍处于解锁状态。如果您从任何其他具有文本格式的应用程序(甚至是另一个 Excel 实例)进行常规粘贴,则 Excel 会锁定您解锁的单元格。
格式问题至少有一个解决方法,您可以从另一个单元格复制正确的格式并将其粘贴回混乱的单元格中。
答案3
您在受保护的工作表 (AtiveCell) 中选择未受保护的单元格,并从 Web 浏览器粘贴数据。粘贴后,该单元格将受到保护。这可不是我们想要的 :-)
我做到了并且有效!
在工作表代码中,在我的情况下是“Sheet1”:
Sub Worksheet_Change(ByVal Target as Range)
...some irellevant code...
ActiveSheet.Unprotect
ActiveCell.Locked=False
...code that protects Sheet1
Exit Sub
答案4
就像本页面(和主题)上的其他人一样,我也觉得这很尴尬。但是,解决这个问题的最佳方法(对我来说)是在插入数据时粘贴到“粘贴值”,在粘贴链接时粘贴到“选择性粘贴”-“超链接”。我这样做是因为我通常有相当复杂的条件格式,我必须理所当然地粘贴值(否则条件格式会发生变化)。希望你觉得这个有用。