唯一名称输入,两个(Microsoft Excel)
克里斯使用了一种数据验证技术,该技术可以成功地阻止在列中输入非唯一信息。 (此技术在_ExcelTips_的先前发行版中进行了介绍。)他正确地指出,数据验证仍然存在问题,但是:有人可以将信息粘贴到单元格中,并成功绕过所有适当的检查。
例如,如果您在单元格A8中键入“乔治”,然后键入“乔治”
在A9中,常规数据验证会产生一个错误,正如您所期望的那样,表明您尝试输入的值不是唯一的。
但是,如果在单元格A8中键入“乔治”,将其复制并粘贴到单元格A9中,则不会触发数据验证错误-允许粘贴。
在Excel中,没有直接的方法可以解决此问题。但是,无论何时尝试粘贴,都可以使Excel进行一些检查。请考虑以下宏:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Resume Next For Each TmpRng In Target TmpVal = TmpRng.Validation.Type If TmpVal > 0 Then If Application.CutCopyMode = 1 Then MsgBox "You cannot paste into validated cells." Application.CutCopyMode = False Exit Sub End If End If Next End Sub
当选择在工作表中改变这个宏只运行。 (此代码必须在工作表的代码窗口中。)它检查目标单元格(正在选择的单元格),并且如果用户试图粘贴到激活了验证的单元格中,它将不允许它。
此外,用户将看到一个指示错误的对话框。
您应该注意,此例程仅检查是否已粘贴到经过数据验证的单元格中。如果是,则生成错误。
例程不会检查目标单元格中的验证规则下实际是否允许粘贴的内容;这将更加复杂,并且需要更多的编码。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2449)适用于Microsoft Excel 97、2000、2002和2003。