MW211 EXIT

devlog
ExcelVBA/複合キー重複チェック関数
2017年09月21日
┌──────────────────────────────────────┐
│'===============================================================================
│'  サブ関数:is複合重複
│'===============================================================================
│Private Function is複合重複(ByVal シート As Worksheet, _
│                            ByVal 第一キー As String, _
│                            ByVal 第二キー As String) As Boolean
│    Const X第一キー As Long = 1
│    Const X第二キー As Long = 2
│    Const yMin As Long = 2
│    Dim yMax As Long
│    Dim obj検索 As Range, 検索範囲 As Range, 起点アドレス As String
│    Dim 検索キー As String
│    検索キー = 第一キー
│    検索キー = Replace(検索キー, "~", "~~")
│    検索キー = Replace(検索キー, "*", "~*")
│    検索キー = Replace(検索キー, "?", "~?")
│    With シート
│        yMax = .UsedRange.Rows(.UsedRange.Rows.Count).Row
│        Set 検索範囲 = .Range(.Cells(yMin, X第一キー), .Cells(yMax, X第一キー))
│        Set obj検索 = 検索範囲.Find( _
│            What:=検索キー, _
│            After:=.Cells(yMin, X第一キー), _
│            LookIn:=xlValues, _
│            LookAt:=xlWhole, _
│            SearchOrder:=xlByRows, _
│            SearchDirection:=xlNext, _
│            MatchCase:=True, _
│            MatchByte:=True _
│        )
│        If obj検索 Is Nothing Then
│            is複合重複 = False
│            Exit Function
│        End If
│        起点アドレス = obj検索.Address
│        Do
│            If .Cells(obj検索.Row, X第二キー).Value = 第二キー Then
│                is複合重複 = True
│                Exit Function
│            End If
│            Set obj検索 = 検索範囲.FindNext(obj検索)
│        Loop Until obj検索.Address = 起点アドレス
│    End With
│    is複合重複 = False
│End Function
│'===============================================================================
└──────────────────────────────────────┘
分類:ExcelVBA