【问题标题】:Pasting values in excel on locked cells在锁定单元格上粘贴excel中的值
【发布时间】:2023-04-02 13:35:01
【问题描述】:

我无法解决的简单问题......

我使用下面的 VBA 粘贴一系列 100 个单元格,以避免任何麻烦并加快流程。但我得到一个错误。

ActiveSheet.Unprotect
Range("C6").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
ActiveSheet.Protect

错误出现在“selection.pastespecial....”中,似乎是因为工作表被保护并且单元格被锁定,而“unprotect”代码没有时间做出反应。 如果我再次运行宏,它可以工作,我想这是因为现在工作表不再受到保护。如果我解锁单元格,它可以正常工作,但我更愿意将它们锁定。

【问题讨论】:

  • 我们能看到更多代码吗?它可能更多地与激活和选择的使用有关,而不是取消保护。
  • 您可能会从阅读How to avoid using Select in Excel VBA 中受益。确保避免.Select 这会导致许多奇怪的问题。
  • 感谢您的帮助,我找到了解决方案。 @ScottCraner 正如我所说,这都是代码,只是为了加快无聊的任务。我有一个用于复制数据的类似宏
  • @Pᴇʜ 我知道,但是对于这么小的宏我认为不会造成任何问题
  • 不可能是全部代码,没有.copy这一行。

标签: excel vba paste protected


【解决方案1】:

编辑:这并没有解决它!作为妥协,我决定解锁牢房。

编辑2:我也发现了问题,当我取消保护工作表时,复制的范围丢失了。所以我试图粘贴一些不存在的东西,解决方案是解锁单元格并删除 VBA 的“取消保护”部分。

找到了一个解决方案,通过在 unprotect 和“paste”之间添加“activesheet.select”我相信我将宏延迟到足以有时间取消保护。

ActiveSheet.Unprotect
ActiveSheet.Select
Range("C6").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
ActiveSheet.Protect

【讨论】:

  • 虽然这可能有效,但要做到这一点还有很长的路要走。有更精确、问题更少、更清洁、更快捷的方法。
  • 什么意思?该宏用于 30 张不同的工作表,但它们看起来都一样,我需要在所有工作表上执行相同的操作。因此,我没有编写 30 个不同的宏,而是将这个用于所有工作表
  • 您可以使用UserInterfaceOnly:=True 保护工作表。
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多