로그인 유지
이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
2011.11.25 00:18
안녕하세요?
필요에 의한 공부가 최고입니다. ^^
책을 따라 공부할때도 예제대로 하는게 아니라 본인이 필요한 기능으로 구현해보는게 능력을 키우는 지름길이죠..
배움의 과정을 잘 이해하고 계신 것 같습니다.
maxr과 maxc의 변수 값 설정에 문제가 있습니다.
UsedRange는 항상 A1셀부터 시작되는 것은 아닙니다.
VBE창의 직접 실행창(Ctrl+G)에 아래의 코드를 입력하고 엔터를 쳐보세요.
? activesheet.usedrange.address결과는 $B$2:$D$10으로 나옵니다. A1셀부터가 아닌거죠.. 저 영역의 가로 세로 크기는 3과 9 입니다.
Cells(3,9) 는 C9셀이므로.. D열이 제외되는 것입니다.
그래서 살짝 수정해본 코드입니다.
Option Explicit
Sub compareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet Dim r As Long, c As Long Dim maxr As Long, maxc As Long Dim diff As Long
Set ws1 = Sheets(1) Set ws2 = Sheets(2)
maxr = ws1.UsedRange.SpecialCells(xlLastCell).Row maxc = ws1.UsedRange.SpecialCells(xlLastCell).Column
diff = 0 For r = 1 To maxr For c = 1 To maxc If ws1.Cells(r, c).Formula <> ws2.Cells(r, c).Formula Then diff = diff + 1 ws1.Cells(r, c).Interior.ColorIndex = 3 ws2.Cells(r, c).Interior.ColorIndex = 3 End If Next c Next r
MsgBox "다른셀의 개수 :" & diff
End Sub
첨부파일을 다운받아 실행해보세요.. ^^
다운 받기 : abyul.com_20111124_sheetCompare-1.xlsm
ps. 코드를 작성하실때는 제가 작성한 것처럼 보기 좋게 작성해야합니다.
For문을 중첩해서 사용하셨다면.. 각각의 들여쓰기를 달리해서 어떤 For문의 Next인지를 알 수 있게 해야합니다.
[ 읽기 편한 권장 코딩 ]
For r = 1 To maxr For c = 1 To maxc diff = diff + 1 Next cNext r
[ 읽기 불편한 코딩 ]
For r = 1 To maxrFor c = 1 To maxcdiff = diff + 1Next cNext r
새 창으로
선택한 기호
안녕하세요?
필요에 의한 공부가 최고입니다. ^^
책을 따라 공부할때도 예제대로 하는게 아니라 본인이 필요한 기능으로 구현해보는게 능력을 키우는 지름길이죠..
배움의 과정을 잘 이해하고 계신 것 같습니다.
maxr과 maxc의 변수 값 설정에 문제가 있습니다.
UsedRange는 항상 A1셀부터 시작되는 것은 아닙니다.
VBE창의 직접 실행창(Ctrl+G)에 아래의 코드를 입력하고 엔터를 쳐보세요.
? activesheet.usedrange.address
결과는 $B$2:$D$10으로 나옵니다. A1셀부터가 아닌거죠.. 저 영역의 가로 세로 크기는 3과 9 입니다.
Cells(3,9) 는 C9셀이므로.. D열이 제외되는 것입니다.
그래서 살짝 수정해본 코드입니다.
Option Explicit
Sub compareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim r As Long, c As Long
Dim maxr As Long, maxc As Long
Dim diff As Long
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
maxr = ws1.UsedRange.SpecialCells(xlLastCell).Row
maxc = ws1.UsedRange.SpecialCells(xlLastCell).Column
diff = 0
For r = 1 To maxr
For c = 1 To maxc
If ws1.Cells(r, c).Formula <> ws2.Cells(r, c).Formula Then
diff = diff + 1
ws1.Cells(r, c).Interior.ColorIndex = 3
ws2.Cells(r, c).Interior.ColorIndex = 3
End If
Next c
Next r
MsgBox "다른셀의 개수 :" & diff
End Sub
첨부파일을 다운받아 실행해보세요.. ^^
다운 받기 : abyul.com_20111124_sheetCompare-1.xlsm
ps. 코드를 작성하실때는 제가 작성한 것처럼 보기 좋게 작성해야합니다.
For문을 중첩해서 사용하셨다면.. 각각의 들여쓰기를 달리해서 어떤 For문의 Next인지를 알 수 있게 해야합니다.
[ 읽기 편한 권장 코딩 ]
For r = 1 To maxr
For c = 1 To maxc
diff = diff + 1
Next c
Next r
[ 읽기 불편한 코딩 ]
For r = 1 To maxr
For c = 1 To maxc
diff = diff + 1
Next c
Next r