정상 모듈리스트에 대해 검사 루틴 value는 두 걷고 사이에 삽입하는 경우
Sub ListToCheck(rng As Range)
Dim cl As Range
Dim i As Integer
Dim bMatch As Boolean
Dim sListName As String
sListName = "sheet2!MyList" 'change this accrording to your needs
bMatch = False
For Each cl In rng.Cells
With WorksheetFunction
For i = 1 To .CountA(Range("MyList"))
If cl.Value = .Index(Range(sListName), i) Then bMatch = True
Next i
End With
With cl.Interior
If bMatch Then
.ColorIndex = 0
Else
.Color = vbYellow
End If
End With
bMatch = False
Next cl
End Sub
및 확인하기위한 또 다른 하나 다음에
Sub ValueToCheck(rng As Range, minV As Long, maxV As Long)
Dim cl As Range
Dim bOk As Boolean
For Each cl In rng.Cells
With cl
If IsNumeric(.Value) Then
If .Value < minV Or .Value > maxV Then
.Interior.Color = vbYellow
Else
.Interior.ColorIndex = 0
End If
Else
.Interior.Color = vbYellow
End If
End With
Next cl
End Sub
그리고, 작은 매크로 시트 : 유효성 검사가 사용될 때 :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Range
Dim colAdr As String
For Each col In Target.Columns
colAdr = col.Address(ReferenceStyle:=xlR1C1)
Select Case Right(colAdr, Len(colAdr) - InStrRev(colAdr, "C"))
Case Is = 1
ListToCheck col
Case Is = 2
ValueToCheck col, 1000000, 9999999
End Select
Next col
End Sub
나는 첫 번째 열이 일부 목록에 대해 점검하고 두 번째는 1000000에서 9999999 사이가됩니다. 그러나이를 적절하게 수정할 수 있습니다. 보시다시피, 필자는 Excel 검증을 사용하지 않습니다. 붙여 넣기 할 때 우연히 덮어 쓸 수 있습니다. 유효하지 않은 셀을 노란색으로 채우기 위해 매크로를 만들었지 만 다른 작업을 수행하도록 지시 할 수 있습니다. 누군가가 1 000 개 이상의 값을 붙여 넣으려고한다고 생각한다면 msgbox를 추천하지 않습니다.
규칙을 덮어 쓸 경우 메시지가 표시되는 예는 여기를 참고하십시오. https://stackoverflow.com/questions/29386971/force-pasted-values-to-obey-data-validation-rules – QHarr