保护条件格式(Microsoft Excel)
Kees的工作表广泛使用条件格式。
但是,当用户复制和粘贴信息或使用拖放操作编辑工作表时,条件格式会变得一团糟。他想知道防止这种情况发生的最佳方法。
发生这种情况是因为条件格式仅被认为是格式。标准复制和粘贴(或拖放编辑)
复制所有内容,包括格式化。这意味着目标单元格将具有源单元格的格式,而不是目标单元格的格式(包括目标单元格中可能存在的任何条件格式)。
答案是告诉用户不要进行标准的复制和粘贴。
相反,他们应该使用粘贴选项粘贴除格式以外的所有内容(或所有内容)。
当然,另一种选择是保护工作表,以便用户无法复制和粘贴任何内容。但是,对于您的用户而言,这可能有点麻烦,因为您可能希望他们进行更改。 (您只是不想让他们弄乱条件格式。)
这导致了宏观方法。如果您可以记录将条件格式应用于单元格的宏,则可以根据需要创建一些其他宏,以将所记录的宏应用于该单元格。例如,假设您记录的宏称为SetCondFormat之类的简短而性感的东西。
接下来,进入Visual Basic编辑器,然后在“立即”窗口中输入以下内容:
? Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
假设您已设置所有条件格式,这将返回一行(也许是一长行),该行显示使用条件格式的单元格和范围的地址。看起来像这样:
$B$3:$B$50,$D$3:$D$50,$G$3:$I$20
接下来,将以下宏添加到ThisWorksheet代码模块中:
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Const cCFAddress = "$B$3:$B$50,$D$3:$D$50,$G$3:$I$20" On Error Resume Next Set r = Range(cCFAddress) On Error GoTo 0 If r IsNot Nothing Then If Application.Intersect(Target, r) IsNot Nothing Then SetCondFormat End If End If End Sub
此处的关键是确保将cCFAddress常量设置为等于在“即时”窗口中看到地址时返回的值。 (如果以后要更改条件格式,则可以再次使用“立即”窗口技巧,而只需更改上述宏中的行即可。)
每当工作表中有更改时,都会执行该宏。它检查更改的地址(传递给Target变量)是否为包含条件格式的原始单元格的一部分。如果是这样,则将再次执行SetCondFormat(您记录下来的用于进行条件格式化的记录)。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(4362)适用于Microsoft Excel 2007、2010、2013和2016。