2014-07-13 2 views
0

이 프로그램은 두 개의 시트에서 두 개의 명명 된 범위를 비교하는 것을 목표로합니다. 셀 값이 두 시트 모두에서 발견되면 녹색으로 표시된 셀을 빨간색으로 강조 표시합니다. 아래의 코드에서 논리적 오류가 발생합니다.두 범위의 셀 값을 비교하는 논리적 오류

두 장의 결과를 수동으로 비교하지만 완전히 다른 결과가 나옵니다.

Public Sub FindBtn_Click() 

range1Name = namedRange1TxtBox 
range2Name = namedRange2TxtBox 
sheet1Name = Sheet1txt 
sheet2Name = Sheet2txt 

Dim range1No(), range2No() As Variant 
range1No() = Range(range1Name) 
range2No() = Range(range2Name) 

Dim i, j As Integer 
Dim cell As Variant 'Range 
For i = LBound(range1No()) To UBound(range1No()) 
For j = LBound(range2No()) To UBound(range2No()) 
    Set cell = Worksheets(sheet1Name).Range(range1Name).Find(what:=Worksheets(sheet2Name).Range(range2Name).Cells(i, 1).Value, lookat:=xlWhole) 

If Not cell Is Nothing Then ' if jde cell value is found in tops then green jde cell 
Worksheets(sheet1Name).Range(range1Name).Cells(i, 1).Interior.ColorIndex = 4 
Else 
Worksheets(sheet1Name).Range(range1Name).Cells(i, 1).Interior.ColorIndex = 3 
End If 
Application.StatusBar = "Progress: " & i & " of " & UBound(range1No()) '& Format(i/9331, "%") 
Next j 
Next i 

답변

0

잠시 머 무르지 않고 코드에 실제로 잘못된 점이 있는지 잘 모르겠습니다. 하지만 이렇게하는 방법 (변수를 문자열로 대체하여 로컬로 작업 할 수있게하는 방법)은 어떨까요?


Public Sub FindBtn_Click() 

    range1Name = "firstrange" 
    range2Name = "secondrange" 
    sheet1Name = "Sheet1" 
    sheet2Name = "Sheet2" 

    Dim range1cell As Range 
    Dim range2cell As Range 

    For Each range1cell In Range(range1Name) 
     range1cell.Interior.ColorIndex = 3 
     For Each range2cell In Range(range2Name) 
      If range1cell.Value = range2cell.Value Then 
       range1cell.Interior.ColorIndex = 4 
       Exit For 
      End If 
     Next range2cell 
    Next range1cell 

End Sub 

더 자세히 살펴보면 j 값을 반복하면서 다른 곳을 참조하지 않는 것 같습니다.

+0

코드가 작동하지 않았다 중 하나 :( 는 내가 찾을 찾기 기능이 작업을 수행하는 방법을 생각했다 어쨌든 주셔서 감사합니다 내 게시물 :) – user3800415

0

다음 코드는 기본적으로 내 기능을 올바르게 사용하는 방법을 모르겠다. 작업 :

감사합니다 :) 않는 코드 아래

Dim cell1 As Range, cell2 As Range 
Dim add1 As Variant 

With Worksheets("JDE").Range("JS_No") 
For Each cell2 In Worksheets("TOPS").Range("TechID") 
Set cell1 = .Find(cell2, LookIn:=xlValues) 
If Not cell1 Is Nothing Then 
    add1 = cell1.Address 
    Do 
    cell1.Interior.ColorIndex = 4 
    cell2.Interior.ColorIndex = 4 
    Application.StatusBar = "Processing: " & add1 
    Loop While Not cell1 Is Nothing And cell1.Address <> add1 
End If 
Next cell2 



End With 
관련 문제