すでに回答済みの場合は謝罪私は検索して運が悪いのですが。一言で言えば、そのセル値が名前付き範囲内の値と一致しない場合、セルの色を変更しようとしています。
どれも私のために働いていないが、私は多くの方法を試した、vbaの達人からのどんな助けでも大いに感謝されるでしょう。
基本的に私はsheet1(Create)G2:G5000の値のリストを持っています。それらがsheet2(lists)の値と一致しないときに知る必要があります
以下の私の現在のコードのコピーを見てください
Sub testMake()
Dim MkData As Range, MkVal As Range
Dim MKArray As Variant
Set MkData = Worksheets("Create").Range("G2:G5000")
Set MkVal = Worksheets("Lists").Range("Make")
For Each MyCell In MkData
If MyCell.Value <> Range("MkVal") Then
MyCell.Interior.ColorIndex = 6
Else
MyCell.Interior.ColorIndex = xlNone
End If
Next
End Sub
前もって助けてくれてありがとう、私は今数日間これを見てきました、そして私が始めたときより近くにはないようです。
回答:
回答№1は0ワークシート関数Vlookupを使って2つの範囲を比較することができます。
Sub testMake()
Dim MkData As Range, MkVal As Range
Dim MKArray As Variant
Dim result As Variant
Set MkData = Worksheets("Create").Range("G2:G5000")
Set MkVal = Worksheets("Lists").Range("Make")
For Each MyCell In MkData
On Error Resume Next
result = Application.WorksheetFunction.VLookup(MyCell, MkVal, 1, False)
If Err <> 0 Then
result = CVErr(xlErrNA)
End If
If Not IsError(result) Then
MyCell.Interior.ColorIndex = xlNone
Else
MyCell.Interior.ColorIndex = 6
End If
Next
End Sub
回答№2の場合は1
私は条件付き書式を使用しますが、プログラム的にこれを行うために以下のようにあなたのコードをわずかに適応させることができます:
Sub testMake()
Dim MkData As Range
Dim MkVal As Range
Dim MKArray As Variant
Dim lngRow As Long
Dim rng1 As Range
Dim rng2 As Range
MKArray = Worksheets("Create").Range("G2:G5000").Value2
Set rng1 = Worksheets("Create").Range("G2")
Set MkVal = Range("Make")
For lngRow = 1 To UBound(MKArray)
If IsError(Application.Match(MKArray(lngRow, 1), MkVal, 0)) Then
If Not rng2 Is Nothing Then
Set rng2 = Union(rng2, rng1.Offset(lngRow - 1, 0))
Else
Set rng2 = rng1.Offset(lngRow - 1, 0)
End If
End If
Next
If Not rng2 Is Nothing Then rng2.Interior.ColorIndex = 6
End Sub