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

 터버기 (kndolbb)

추천:  2
파일:     조회:  1736
제목:   [RE]마우스 오측메뉴에서 vba 코드실행 가능합니까?
     
 


Option Explicit

'ThisWorkBook Module에 위치

'--------------------------------------------------------------------------------------------------------
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'--------------------------------------------------------------------------------------------------------

    
    Dim cmdBar As CommandBar
    Dim cmdBtn As Object
    
    Set cmdBar = Application.CommandBars("Cell")
    
    Dim iCnt As Long: iCnt = cmdBar.Controls.Count
    Dim i As Long
 
    
    ' delete custom controls
   For i = iCnt To 1 Step -1
        Set cmdBtn = cmdBar.Controls(i)
        If Not cmdBtn.BuiltIn Then cmdBtn.Delete
   Next i
   
   If not(Sh.Name = "Sheet1")  Then Exit Sub
   
   ' add btn
   Set cmdBtn = cmdBar.Controls.Add(Temporary:=True, Before:=1)
   
   With cmdBtn
        .Caption = "Hello"
        .OnAction = "Hello"
    
    End With


End Sub


'-----------------------------------------------
'Standard Module에 위치
'-----------------------------------------------
'-----------------------------------------------
Sub Hello()
'-----------------------------------------------
    MsgBox "Hello"
End Sub


==============[참서리님 글에 대한 답변입니다]==============



추가질문이 있습니다.

If not(Sh.Name = "Sheet1")  Then Exit Sub
이줄에서 정의되지않은이름이라는 메세지가 뜨서 이것저것 찾아보니

Private Sub Workbook_SheetBeforeRightClick(ByVal Target As Range, Cancel As Boolean)
상기와 같이 ByVal Sh As Object 이 없더군요
그래서 직접 입력을 했더니...
컴파일 오류입니다.
[프로시저 선언은 동일한 이름을 가지고 있는 이벤트나 프로시저 설명과 일치하지 않습니다.] 라는 메세지가 뜨네요.

그래서 If not(Sh.Name = "Sheet1")  Then Exit Sub 이부분을 지우고 사용하고 있습니다.
원인이 무엇인지요?


그리고 
추가된 메뉴의 색상을 희미하게하고 선택불가능한 상태로 만드는건 어떻게 하면 되는지요?
예로 클립보드에 아무것도 없을때 붙이기 메뉴가 활성화되지않는것 처럼요.
 
[불량 게시물 신고]  
참서리ThisWorkBook에서 보시면 있을 겁니다.
즉 BeforeRightClick는 Workbook에도 있고, Sheet에도 있는
Event인데 아마 Sheet에서 찾으신 것 같습니다.
확인 바랍니다.
04-09 (08:33)
삭제 ■신고
        
  

작성일 : 2019-04-08(23:46)
최종수정일 : 2019-04-08(23:46)
 


 ◎ 관련글

  제 목   작성자   날짜
마우스 오측메뉴에서 vba 코드실행 가능합니까? 터버기 2019-04-07
[RE]마우스 오측메뉴에서 vba 코드실행 가능합니까? 참서리 2019-04-07
[RE]마우스 오측메뉴에서 vba 코드실행 가능합니까? 터버기 2019-04-08