차례:
비디오: 엑셀 VBA #83 / 셀에 달력삽입 [VBA] 2024
Excel 2007 이전에 VBA 프로그래머는 사용자 지정 메뉴, 사용자 지정 도구 모음 및 사용자 지정 바로 가기 (마우스 오른쪽 단추) 메뉴를 만들기 위해 CommandBar 개체를 사용했습니다. Excel 2007부터는 CommandBar 개체가 이상한 위치에 있습니다. 메뉴 또는 도구 모음을 사용자 지정하는 코드를 작성하면 Excel이 해당 코드를 가로 채고 많은 명령을 무시합니다.
잘 짜여진 인터페이스 향상 기능을 표시하는 대신 Excel 2007 (이후 버전과 같은)은 사용자 정의 메뉴와 도구 모음을 추가 기능이라는 포괄적 인 리본 탭에 간단하게 덤프합니다.
메뉴 및 도구 모음 사용자 지정은 추가 기능 → 메뉴 명령 또는 추가 기능 → 사용자 지정 도구 모음 그룹으로 끝납니다. 그러나 CommandBar 객체를 사용하는 바로 가기 메뉴를 사용자 정의하면 항상 그렇듯이 작동합니다.
결론은 무엇입니까? CommandBar 객체는 더 이상 유용하지 않지만 바로 가기 메뉴를 사용자 정의하는 유일한 방법입니다.
셀 바로 가기 메뉴에 새 항목 추가
아래에서 셀을 마우스 오른쪽 단추로 클릭 할 때 나타나는 바로 가기 메뉴에 새 항목을 추가하는 샘플 코드를 찾을 수 있습니다. 이 예를 자신의 필요에 맞게 적용 할 수 있어야합니다.
셀 바로 가기 메뉴에서 사용 가능하도록 설정하여 대소 문자 변경 유틸리티를 약간 향상시킬 수 있습니다.
AddToShortcut 프로시 저는 셀 바로 가기 메뉴에 새 메뉴 항목을 추가합니다. NewControl이라는 개체의 Caption 및 OnAction 속성을 변경하여 자체 매크로를 가리 키도록 변경할 수 있습니다.
Sub AddToShortCut () DimBar As CommandBar Dim NewControl (CommandBarButton으로 설정) DeleteFromShortcut Set Bar = 응용 프로그램. CommandBars ("Cell") NewControl = Bar를 설정합니다. 통제 수단. NewControl을 사용하여 _ (Type: = msoControlButton, ID: = 1, _ temporary: = True)를 추가하십시오. Caption = "& 대소 문자 변경". OnAction = "ChangeCase". Style = msoButtonIconAndCaption End With End Sub
바로 가기 메뉴를 수정하면 Excel을 다시 시작할 때까지 해당 수정 사항이 적용됩니다. 즉, VBA 코드가 포함 된 통합 문서를 닫을 때 수정 된 바로 가기 메뉴가 자체적으로 다시 설정되지 않습니다. 따라서 바로 가기 메뉴를 수정하는 코드를 작성하면 거의 항상 수정 효과를 되돌리기위한 코드를 작성합니다.
DeleteFromShortcut 프로시 저는 셀 바로 가기 메뉴에서 새 메뉴 항목을 제거합니다.
Sub DeleteFromShortcut () On Error 다음 응용 프로그램을 다시 시작합니다. CommandBars ("셀"). 컨트롤 _ ("사례 변경"). Delete End Sub
셀을 마우스 오른쪽 단추로 클릭 한 후 새 메뉴 항목이 표시되는 방법을 보여줍니다.
사용자 정의 메뉴 항목 인 대소 문자 변경을 나타내는 셀 바로 가기 메뉴.두 개의 변수를 선언 한 후 첫 번째 실제 명령은 DeleteFromShortcut 프로 시저를 호출합니다. 이 문은 단축키 셀 메뉴에 대소 문자 변경 메뉴 항목이 하나만 표시되도록합니다. 그 줄을 주석으로 처리하고 (줄의 시작 부분에 아포스트로피를 넣으십시오) 몇 차례 절차를 실행하십시오.
셀을 마우스 오른쪽 버튼으로 클릭하면 대소 문자 변경 메뉴 항목의 여러 인스턴스가 표시됩니다. DeleteFromShortcut을 여러 번 실행하여 모든 항목을 제거하십시오 (각 추가 메뉴 항목마다 한 번).
마지막으로, 통합 문서가 열릴 때 바로 가기 메뉴 항목을 추가하고 통합 문서가 닫힐 때 메뉴 항목을 삭제하는 방법이 필요합니다. 이렇게하는 것은 쉽습니다.
Private Sub Workbook_Open () 호출 AddToShortCut End Sub Private Sub Workbook_BeforeClose (부울로 취소) Call DeleteFromShortcut End Sub
통합 문서가 열리면 Workbook_Open 프로 시저가 실행되고, 통합 문서가 닫히기 전에 Workbook_BeforeClose 프로 시저가 실행됩니다. 의사가 주문한 것.
Excel 2013 및 Excel 2016의 다른 점은 무엇입니까?
VBA를 사용하여 Excel 2007 또는 이전 버전에서 바로 가기 메뉴를 사용하는 경우 중요한 변경 사항을 인식해야합니다.
과거에는 코드가 바로 가기 메뉴를 수정 한 경우 해당 수정 내용이 모든 통합 문서에 적용되었습니다. 예를 들어 셀 오른쪽 클릭 메뉴에 새 항목을 추가 한 경우 모든 통합 문서 (나중에 열리는 다른 통합 문서)에서 셀을 마우스 오른쪽 단추로 클릭하면 해당 새 항목이 나타납니다. 즉, 응용 프로그램 수준에서 바로 가기 메뉴 수정이 이루어졌습니다.
Excel 2013 및 Excel 2016은 단일 문서 인터페이스를 사용하며 바로 가기 메뉴에 영향을줍니다. 바로 가기 메뉴의 변경 내용은 현재 통합 문서 창에만 적용됩니다. 바로 가기 메뉴를 수정하는 코드를 실행하면 활성 창 이외의 창에 대한 바로 가기 메뉴가 변경되지 않습니다. 이것은 일이 익숙했던 방식에서 급격한 출발입니다.
또 다른 단점: 활성 창에 수정 된 바로 가기 메뉴가 표시 될 때 사용자가 통합 문서를 열거 나 새 통합 문서를 만드는 경우 새 통합 문서에도 수정 된 바로 가기 메뉴가 표시됩니다. 즉, 새 창은 새 창을 열 때 활성화 된 창과 동일한 바로 가기 메뉴를 표시합니다.
결론: 과거에는 수정 된 바로 가기 메뉴가있는 통합 문서 또는 추가 기능을 열면 모든 통합 문서에서 수정 된 바로 가기 메뉴를 사용할 수 있습니다. 당신은 더 이상 그 확신을 갖지 않습니다.