Excel.Tips.Net Welcome toExcel.Tips.Net

Helpful Links

Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment

Tips.Net Store

ExcelTips FAQ
ExcelTips Premium

Learn Access Now

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

Newest Tips

Assigning a Macro to a Keyboard Combination

Creating Scenarios

Using Message Boxes

Understanding Phantom Macros

Picking a Group of Cells

Running Out of Memory

Hiding Rows Based on a Cell Value

 

Unique Name Entry, Take Two

Summary: If you need to make sure that a column contains only unique text values, you can use data validation for the task. This won't help when someone decides to copy and paste information, however. This tip addresses how you can block such actions using a macro. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)

Chris uses a data validation technique that successfully stops non-unique information from being entered in a column. (This technique was described in previous issues of ExcelTips.) He rightfully notes that there is still a problem with data validation, however: Someone can paste information into a cell and successfully bypass all the checks in place.

For instance, if you type "George" into cell A8, and then type "George" into A9, regular data validation will generate an error, as one would expect, indicating that the value you are trying to enter is not unique. However, if you type "George" into cell A8, copy that cell and paste it into cell A9, no data validation error is triggered--the paste is allowed.

There is no direct way around this in Excel. You can, however, cause Excel to do some checking whenever you try to do a paste. Consider the following macro:

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

This macro is only run when the selection changes in a worksheet. (This code needs to be in the code window for a worksheet.) It examines the target cells (the ones being selected), and if the user is trying to paste into a cell that has validation active, it will not allow it. Further, the user will see a dialog box that indicates the error.

You should note that this routine just checks to see if pasting into a data-validated cell is being done. If it is, then an error is generated. The routine does not check to see if what is being pasted is actually permissible under the validation rules in the target cells; that would be much more complex and require quite a bit more coding.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2449) applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003 | 2007

More Power! For some people, the prospect of creating macros can be scary. Those who conquer their fears, however, find they become much more confident and productive once they learn how to make Excel do exactly what they want. ExcelTips: The Macros is an invaluable source for learning Excel macros. You are introduced to the topic in bite-sized chunks, pulled from past issues of ExcelTips. Learn at your own pace, exactly the way you want.
 
Check out ExcelTips: The Macros today!