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

작성자:  

 김영진 (snakesolid)

추천:  2
파일:     조회:  1272
제목:   VBA 변수값 충족할때 한번만 실행 매크로 의문점
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

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

여기서 이런저런 글 검색해서 해봤는데 인식이 안되네요

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("h17").Value = Range("h18").Value Then
Application.EnableEvents = False
ExecuteExcel4Macro ("SOUND.PLAY(,""C:\asd\sound\sound0.wav"")")
Application.EnableEvents = True
End If
End Sub

저게 안되서
Private Sub Worksheet_Change(ByVal Target As Range)
If target = Range("h17").Value = Range("h18").Value Then
이렇게 바꾸니까 반응 안하길래 if타겟을 if로 바꾸고 뒤에 가로를 바꿔보았습니다
Private Sub Worksheet_Change()
이것도 반응 안되서 코드자체가 이상한건가 생각해서
Private Sub Worksheet_Calculate()
이렇게 바꾸니까 두값이 일치하는동안 계속 소리가 나네요
그럼 코드자체는 맞는다는건데 값 일치했을때
처음 한번만 실행되게끔 (아마 change 가 맞긴한거같아요)
바꾸면 반응이 없는 이유를 알수 있을까요? 

------

계속 이런저런 시도해보다 알아낸점

Private Sub Worksheet_Change(ByVal Target As Range)
이 선언이라서 if에 있는 셀  h17 h18값이 변할땐 반응 없다가
다른셀에 있는 내용이 변경될때나 값자체가 삭제될때도  두셀 값이 같으면 소리가 나네요;;; 점점더 헷갈려집니다;
 
[불량 게시물 신고]  
잡초Target = Range("h17").Value = Range("h18").Value 식의 결과값은 항상 False가 됩니다.
Target = Range("h17").Value 의 결과값이 True or Flase인데
True or Flase =  Range("h18").Value 같은지 비교하므로 항상 결과값은 Flase가 됩니다.
다음과 같이 변경하여 보세요..
(Target = Range("h17").Value) and (Target = Range("h18").Value)
05-10 (11:38)
삭제 ■신고
김영진Private Sub Worksheet_Calculate()
Static a0 As Variant
Static b0 As Variant
If Range("h13") = Range("h14") And (Range("h14") <> a0 Or Range("h13") <> b0) Then
Application.EnableEvents = False
ExecuteExcel4Macro ("SOUND.PLAY(, ""C:\KiwoomHero4\sound\sound0.wav"")")
Application.EnableEvents = True
End If
a0 = Range("h13").Value
b0 = Range("h14").Value
End Sub
05-10 (11:50)
삭제 ■신고
김영진타겟후 부등호를 연속으로 쓰니까 거기서 또 오류가 나는건가보네요
정말 오묘하네요  감사합니다./
05-10 (11:51)
삭제 ■신고
김영진그런데 또 막상 적용하면 소리가 안나네요
혹시 (Target = Range("h17").Value) and (Target = Range("h18").Value)
and가 아니고= 아닌가요? 타켓이 어떤값인지 모르고 
셀17 = 셀18 이어야 하는건데
05-10 (13:41)
삭제 ■신고
김영진적용하니 둘다 안되는군요 그냥 복잡하게 수작업으로 
If Range("h13") = Range("h14") And (Range("h14") <> a0 Or Range("h13") <> b0) Then
도와주셔서 감사합니다 ㅜㅜ
05-10 (13:53)
삭제 ■신고
잡초Worksheet_Change : 해당시트 셀값이 변경될때 발생하면 Target는 값이 변화된 셀이며, 여러셀 선택 후 동시에 값을 변경(Ctrl+Enter)하면 에러 발생 합니다.05-10 (14:23)
삭제 ■신고
김영진그럼 안되는 이유를 알겠네요 and를 or로 바꾼다면 될수도 있겠군요
동시 바뀌는게 아니라 한셀이 바뀌면서 같아질수 있으니
05-10 (15:12)
삭제 ■신고
        
  

작성일 : 2022-05-10(09:44)
최종수정일 : 2022-05-10(11:24)