|
|
|
|
|
|
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 이부분을 지우고 사용하고 있습니다.
원인이 무엇인지요?
그리고
추가된 메뉴의 색상을 희미하게하고 선택불가능한 상태로 만드는건 어떻게 하면 되는지요?
예로 클립보드에 아무것도 없을때 붙이기 메뉴가 활성화되지않는것 처럼요. |
|
[불량 게시물 신고] |
|
|
|
작성일 : 2019-04-08(23:46)
최종수정일 : 2019-04-08(23:46) |
|
|
|
|