2016-10-21 17 views
0

皆さん、私が作成したリストのセルにユーザーが全く同じデータを入力できるコードを書く方法を考えようとしています。私は、コードがユーザーのエントリを検証し、そのエントリがリストにあるかどうかを確認し、ユーザーが入力したデータを消去してメッセージを表示しないかどうかを確認します。私はほとんどそこにいますが、私はVlookの仕事をしていないようです。どんな助けでも非常に感謝しています。以下は、私が書いたコードです。ユーザーが誤ったデータをセルに入力しないようにするためのVBAコードExcel

Option Explicit 
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    Dim rng As Range 
    Dim aCell As Range 
    Dim LU As Range 
    Dim Celda As Range 


' 
    On Error GoTo Whoa 
    Application.EnableEvents = False 
'~~> This is the range of cells where I want the user to input the data 
    Set rng = Range("A1:A15") 

    'THis is the range where I want the macro to look if the data the user entered is in the list 
    Set LU = Application.WorksheetFunction.VLookup(aCell.Value, Range("F1:F5"), 1, False) 


On Error GoTo MyErrorHandler: 
If Not Application.Intersect(Target, rng) Is Nothing Then 
     '~~> Loop through all cells in the range 
     For Each aCell In rng 
      If aCell.Value <> "" Then 
       If aCell.Value <> LU Then 
        aCell.ClearContents 

MyErrorHandler: 
If Err.Number = 1004 Then 
aCell.ClearContents 
MsgBox "Item Number es Incorrecto - Error en la celda " & aCell.Address 

       End If 
       End If 
      End If 
      Next 
     End If 


Letscontinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume Letscontinue 


End Sub 
+2

データ検証でこれを正確に行うことができるVBAを使用する理由は何ですか? – nbayly

+0

なぜ検証リストを使用していませんか? http://www.contextures.com/xlDataVal01.html – RCaetano

+1

@nbayly 15秒早くxD – RCaetano

答えて

0

リストで許可するデータ - データ検証を使用してください。出所は=$F$1:$F$5です。ニーズに合わせてオプションをカスタマイズできます。 VBAは必要ありません。

+0

コピーペーストを行い、データを消去できるのでデータ検証を使用したくありませんデータ検証。また、私が検証したいリストには、何百ものオプションがあり、リストからスクロールダウンする必要があるデータ検証を使用するのが難しくなります。 –

+0

あなたの権利では、コピー&ペーストはデータ検証をトリガーしません。下にスクロールすることについての部分は、値を入力することができるため、必ずしも真実ではないと思います。オプションの1つと一致する限り、エラーは発生しません。 VBAとDVを組み合わせて変更イベントをトリガーし、Pasteが元に戻すリストの最後のアクションであるかどうかを確認し、値をセルにリセットすることでVBAによるデータ検証をトリガーする方法を見つけることができます。 – nbayly

+0

ありがとうnbayly上記の私のコードで達成しようとしている種類のもの、私は一度のセルでそれをテストし、うまく動作し、私が遭遇している問題は、範囲内の製品を見つけるためにVLookupを使用するときです。なぜ動作していないのでしょうか? "オブジェクト変数またはブロック変数が設定されていません"というエラーメッセージが表示されます。すべてを試しましたが、それが何であるか把握できません。 –

関連する問題