如何使用可写单元格保护工作表并保留格式和注释

如何使用可写单元格保护工作表并保留格式和注释

有没有办法保护工作表,使某些单元格可写(例如,用户可以在这些单元格中输入数字),但格式和注释框无法更改?我可以创建一个受保护的工作表,其中只有某些单元格是解锁的。但是,如果我将另一个工作表(具有不同的格式和自己的注释框)中的单元格复制/粘贴到这些单元格中,格式和注释将被覆盖。

该解决方案最好在 Excel 2010 中运行,但针对较新版本的特定解决方案对我来说也很感兴趣。

答案1

在这种情况下,我发现我需要给出否定的答案:如果没有 VBA 宏,您要求的功能就不可能实现。如果您有兴趣采用这种方式,下面是一段简单的代码,它将尝试执行正常的 Excel 粘贴,并在出现错误时尝试从剪贴板打印。

Public Sub PasteasValue()
    On Error GoTo errhand
        If ActiveWorkbook Is ThisWorkbook Then
        Selection.PasteSpecial Paste:=xlPasteValues
            End If
        If Not ActiveWorkbook Is ThisWorkbook Then
        Selection.Paste
            End If
    Exit Sub
    
errhand:
    If ActiveWorkbook Is ThisWorkbook Then
    ActiveCell.PasteSpecial xlPasteAll
        End If
    If Not ActiveWorkbook Is ThisWorkbook Then
    ActiveCell.PasteSpecial xlPasteAll
        End If
End Sub

我的答案是基于十多年来 Excel 用户一直要求该功能,但一直没有解决方案。

作为证据,我在下面列出了在 Microsoft 的 Excel User Voice 网站上发现的众多建议中的一些,这些建议总是被忽略:

有一些最新证据表明(截至 2020 年 12 月)Excel 开发团队可能终于开始倾听但十多年过去了,人们仍旧只能猜测。

您会在评论中找到对某些用户有用的各种解决方法,但它们都需要用户进行一些约束,或者使用 VBA 宏来修改 Excel 工作表的行为。

答案2

首先,按照您想要的方式格式化单元格或范围,并添加您喜欢的任何注释。

第二,右键单击用于用户输入的单元格==>>“格式化单元格”==>>“保护”选项卡==>>取消选中“锁定”

第三,“审阅选项卡==>>保护工作表”,确保更改单元格、列、行格式以及编辑对象和编辑场景的选项都未选中。如果您希望用户能够在可以输入数据的单元格之间使用 TAB,那么您可能还需要取消选中“选择锁定单元格”,这样当他们使用 TAB 时,这些位置对他们来说就显而易见了。

编辑:有人指出格式仍然可以复制到少数未锁定的单元格中。

因此你这样做:使工作表看起来像你想要的那样. 解锁您希望用户输入数据的特定单元格,并保护工作表。 复制工作表。 在第二份副本中,用户输入通常会进入的单元格指的是第一个工作表中相应的未锁定的单元格。 现在锁定第二张工作表上的每个单元格。

用户可以以任何奇怪的方式格式化第一个工作表上未锁定的单元格 A1,但锁定的第二张工作表上匹配的单元格 A1 将只包含第一个工作表的“=Sheet1!A1”的值,没有格式或注释。

用户可以滥用第一个工作表,从 Nyancat 风格的网页复制粘贴,但是您的第二张工作表将以您选择的任何格式显示这些值。 用户可能仍会输入错误数据,或类似 SQL 注入的内容,但至少如果用户足够值得信任,只输入数据文本和值数字,您的问题就应该可以解决。

相关内容