나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황기성 (latinum)

추천:  2
파일:     조회:  2872
제목:   [RE]시트 내용 비교하는 VBA 코드 좀 봐주세요
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

1. 엑셀 버전(95,97,2000,2002):
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP):
3. CPU (486,PentiumI/II/III/IV...):
4. RAM (32,64,128,256,512MB,1G...): 

* 아래줄에 질문을 작성하세요 >>

서로 다른 workbook에 있는 sheet A와 sheet B의 데이터가 정확히 일치하는지 여부를 판단할 방법이 없어서 매크로로 구현해 보려 합니다.(혹시 팁이 있으시면 좀 알려주세요)
---------------------------------------------------------------
'//두 시트의 내용이 정확히 일치한지 아닌지...2003/07/09
Sub 시트비교()
    Dim sht1 As Worksheet, sht2 As Worksheet
    Dim rng1 As Range, rng2 As Range
    Dim i As Integer
    
    MsgBox ("시트1을 선택하시오")
    Set sht1 = Workbooks(ActiveWorkbook.Name).Sheets(ActiveSheet.Name)
    MsgBox ("시트2을 선택하시오")
    Set sht2 = Workbooks(ActiveWorkbook.Name).Sheets(ActiveSheet.Name)
    
    Set rng1 = sht1.UsedRange
    Set rng2 = sht2.UsedRange
    
    Dim mycell
    
    For Each mycell In rng1
        If mycell <> sht2.Cells(mycell.row, mycell.Column) Then
            MsgBox ("Not matched -> " & mycell.row & "행" & mycell.Column & "열")
        End If
    Next mycell
    MsgBox ("All data are same!!")
End Sub
---------------------------------------------------------
위와 같이 구현하는데 문제점은...
sheet A를 선택한 후 sheet B를 선택해야 하는데...
sheet B를 선택할 수 없이 루틴은 그냥 수행돼 버립니다.
어떻게 조치를 해야할 지 생각이 안 납니다.
고수님들의 조언 바랍니다.
그럼 미리 감사를..꾸벅..^^
==============[ist공원님 글에 대한 답변입니다]==============
안녕하세요? ist공원 님!

간단히...아래의 예제를 참고하세요...

Sub dhTest()
Dim rngTo As Range
Dim str1 As String
Dim str2 As String
Const Es As String = "MagicSheet & 엑사모::OfficeDev.co.kr"
    str1 = ActiveSheet.Name
On Error Resume Next
    Set rngTo = Application.InputBox(prompt:="워크시트를 선택하십시오!", Title:=Es, Type:=8)
On Error GoTo 0
    If rngTo Is Nothing Then
        MsgBox "선택을 취소하셨습니다!", vbExclamation, Es
        Exit Sub
    Else
        str2 = rngTo.Parent.Name
        If str2 = str1 Then
            MsgBox "다른 시트를 선택하세요!", vbExclamation, Es
        Else
            MsgBox str2 & "를 선택했습니다!", vbInformation, Es
        End If
    End If
End Sub


그럼...행운이 있으시길...!
 
[불량 게시물 신고]  
ist공원햐..역시 그런 방법은 몰랐습니다.
parent...
선택한 영역의 parent.name은 시트의 이름 같군요.
감사하고요.
선택한 영역이 포함된 workbook의 이름을 알 수 있는 또 다른 방법도
무지무지~~~~^^ 궁금합니다.
답변 주실꺼죠???
꾸벅~~
07-09 (17:41)
삭제 ■신고
ist공원황기성님.
스스로 찾아냈습니다.
저는 혹시 grandparent.name이 있지 않을까 찾아해맸는데...
parent.parent.name....^^..workbook의 이름을 알아낼려면, 이거 맞죠?
소중한 답변..감사드립니다.
복 받으실 거에요..
07-09 (17:49)
삭제 ■신고
황기성ist공원 님도 복 많이 받으세요^^*

그럼...행운이 있으시길...!
07-09 (17:53)
삭제 ■신고
        
  

작성일 : 2003-07-09(17:23)
최종수정일 : 2003-07-09(17:23)
 


 ◎ 관련글

  제 목   작성자   날짜
시트 내용 비교하는 VBA 코드 좀 봐주세요 ist공원 2003-07-09
[RE]시트 내용 비교하는 VBA 코드 좀 봐주세요 황기성 2003-07-09