|
ikkeさん、ぴかるさん、BOTTA さん、こんばんは。
>
>重複チェックなら、「入力規則」が便利ですよ。
>ただし、VBAではありません。
>
>>登録用のシートを作成して番号その他の登録を行ないます。
>>登録コードは手入力なので重複してしまう可能性があります。
>
>「登録コード」はすべてA列に入力するものとして、
>まず、A列全体を選択状態にして、「データ」→「入力規則」
>「設定」タブの「入力値の種類」で「ユーザー設定」を選び、
>「数式」欄に
>=COUNTIF(A:A,A1)=1と入力。
私も↑に賛成です。
が、敢えてVBAでやれば、
'=============================================================
Sub test()
Dim rng As Range
Dim wk() As Variant
Dim ans() As Variant
Set rng = Range("a2", Cells(Rows.Count, 1).End(xlUp))
If rng.Row > 1 And rng.Count > 1 Then
ReDim wk(1 To rng.Count)
For idx = 1 To rng.Count
wk(idx) = rng.Cells(idx).Text
Next
ans() = mk_dup_array(wk())
MsgBox Join(ans, vbLf)
End If
End Sub
'==================================================================
Function mk_dup_array(myarray() As Variant) As Variant
Dim myclct As New Collection
Dim dup()
Dim jdx As Long
On Error Resume Next
For idx = LBound(myarray(), 1) To UBound(myarray(), 1)
Err.Clear
myclct.Add myarray(idx), myarray(idx)
If Err.Number <> 0 Then
ReDim Preserve dup(jdx)
dup(jdx) = myarray(idx)
jdx = jdx + 1
End If
Next
Set myclct = Nothing
mk_dup_array = dup()
On Error GoTo 0
End Function
まっ、参考程度に確認して下さい。
|
|