Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡ„ΠΈΡΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 30

Автор Π˜Ρ€ΠΈΠ½Π° Π€Ρ€ΠΈΠ·Π΅Π½

Для удалСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° мСню Π½Π°Π΄ΠΎ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройка» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ мСню, Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ удаляСмый элСмСнт ΠΈ Π² появившСмся мСню Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ панСль мСню, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ПанСли инструмСнтов Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° «Настройка» ΠΈ, Π²Ρ‹Π±Ρ€Π°Π² Π² спискС ПанСли инструмСнтов имя удаляСмой ΠΏΠ°Π½Π΅Π»ΠΈ мСню, Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ.


ВосстановлСниС встроСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² мСню

Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встроСнный элСмСнт мСню, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ€Π°Π½Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½. Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия Π½Π°Π΄ мСню, это дСлаСтся Π² ΠΎΠΊΠ½Π΅ «Настройка». Если ΠΏΡ€ΠΈ этом восстановится Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню ΠΈΠ»ΠΈ подмСню, Ρ‚ΠΎ вмСстС с Π½ΠΈΠΌ восстановятся само мСню ΠΈ всС Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ.

Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройка» Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ мСню. Π—Π°Ρ‚Π΅ΠΌ, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню ΠΈΠ»ΠΈ подмСню, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² появившСмся мСню ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Бброс.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ панСль мСню, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ПанСли инструмСнтов ΠΎΠΊΠ½Π° «Настройка», Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² спискС ПанСли инструмСнтов имя восстанавливаСмой ΠΏΠ°Π½Π΅Π»ΠΈ мСню ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Бброс.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA

НовоС мСню Π² Excel, Word ΠΈΠ»ΠΈ PowerPoint ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ создаСтся срСдствами VBA, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этих прилоТСниях Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ «Настройка» Π½Π΅ содСрТит ΠΊΠ½ΠΎΠΏΠΊΠΈ Бвойства. НовоС мСню создаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Add ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ CommandBars (ПанСли ΠΊΠΎΠΌΠ°Π½Π΄):

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Add(Name, Position, MenuBar, Temporary),

Π³Π΄Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ – ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ CommandBars, Π° всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² скобках Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. Name Π·Π°Π΄Π°Π΅Ρ‚ имя Π½ΠΎΠ²ΠΎΠ³ΠΎ мСню;

Position опрСдСляСт Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (значСния-константы msoBarLeft, msoBarTop, msoBarRight, msoBarButtom ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ мСню слСва, Π²Π²Π΅Ρ€Ρ…Ρƒ, справа ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·Ρƒ ΠΎΠΊΠ½Π°, msoBarFloating Π·Π°Π΄Π°Π΅Ρ‚ Β«ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π΅Β» мСню, msoBarPopup ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мСню Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ).


Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° MenuBar ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мСню Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ строку мСню (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – False). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Temporary ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мСню Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ исчСзнСт, ΠΊΠΎΠ³Π΄Π° закроСтся содСрТащСС Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – False).

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся Π½ΠΎΠ²ΠΎΠ΅ мСню Β«Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню»:

Dim CstmBar As CommandBar

Set CstmBar = CommandBars.Add(Name:="Π“ΠΎΠ»ΠΎΠ²Π½oe мСню",

Position:=msoBarTop, MenuBar:=True, Temporary:=False)

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… мСню

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ мСню ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Add ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ CommandBarControls, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² Π΅Π³ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Ρ‚ΠΈΠΏΠ° CommandBar, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт панСль нашСго мСню. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π° панСль ΠΊΠ½ΠΎΠΏΠΊΠΈ (CommandBarButton), ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ списки (CommandBarComboBox) ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ мСню (ComandBarPopup). Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Add(Type, Id, Parameter, Before, Temporary),

Π³Π΄Π΅ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° CommandBarsControl.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² скобках Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΡƒΡ€Π΅ (Π’ΠΈΠΏ) Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ добавляСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π•Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ msoControlPopup ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ добавляСмый ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнт – Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… мСню ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Id ΠΈ Parameter ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Before – число, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ элСмСнтов ΠΏΠ°Π½Π΅Π»ΠΈ: Ссли Π΅Π³ΠΎ Π½Π΅Ρ‚, элСмСнт помСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ†. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя ΠΈ ΠΊΠ»ΡŽΡ‡ быстрого доступа ΠΊ созданному мСню ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Π΄Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Caption.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ добавлСния Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ°Π½Π΅Π»ΠΈ Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ быстрого доступа Β«Π’Β»:

Dim CstmCtrl As CommandBarControl

Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup,

Before:=1)

CstmCtrl.Caption = Β«&Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²Β»

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ подмСню ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Add ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ CommandBarControls. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π’ΡƒΡ€Π΅ (Π’ΠΈΠΏ) Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ msoControlPopup.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², располоТСнного Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ мСню Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню, добавляСтся подмСню Β«ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²Β»:

Dim CstmPopUpi As CommandBarPopup

Set CstmPopUpi =

stmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUpi.Caption = Β«ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²Β»

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² мСню ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Add ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ CommandBarControls ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌΡƒ измСняСмоС мСню. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π΅ имя Π² мСню, Π° Π·Π°Ρ‚Π΅ΠΌ Π² качСствС значСния свойства OnAction Π·Π°Π΄Π°ΠΉΡ‚Π΅ имя VBA-ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’ качСствС значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π’ΡƒΡ€Π΅ (Π’ΠΈΠΏ) ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Add ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ msoControlButton, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ вставляСмый Π² мСню элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «Накладная» Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню. Π’Ρ‹Π±ΠΎΡ€ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ запускаСт ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Invoice:

Set CstmCtrl = CstmPopUpi.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = «Накладная»

CstmCtrl.OnAction = Β«Module1.InvoiceΒ»

ΠœΠ΅Ρ‚ΠΎΠ΄ Add позволяСт Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² мСню ΠΈ встроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Для этого ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Id, Ρ€Π°Π²Π½ΠΎΠ΅ числовому ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Office. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Office 2000 количСство ΠΊΠΎΠΌΠ°Π½Π΄ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ 4000, Π² Ρ‚Π°Π±Π». 22 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рСдактирования.


Π’Π°Π±Π»ΠΈΡ†Π° 22

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² встроСнных ΠΊΠΎΠΌΠ°Π½Π΄ мСню

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ добавлСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ правописания Spelling Π² мСню ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню:

Set mySpell = CommandBars(Β«Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню»).Π‘ΠΎntrols(Β«ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΒ»)_.Controls.Add(Id:=2)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 61. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ всС встроСнныС мСню ΠΈ создано собствСнноС иСрархичСскоС мСню. На Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ мСню Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°. Оно Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π²Π° подмСню, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… условий создаСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ: Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠžΡ‚ΠΌΠ΅Π½Π° (рис. 127). ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ создаСт собствСнноС мСню (рис. 127), вторая ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π° мСсто (рис. 128).

ВСхнология выполнСния

1. ΠΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Word ΠΈ создайтС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VBA ΠΈ создайтС Ρ„ΠΎΡ€ΠΌΡƒ.

3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания собствСнной ΠΏΠ°Π½Π΅Π»ΠΈ.

Option Explicit

Public Sub CreateCustomMenu()

Dim CstmBar As CommandBar

Dim CstmPopUpi As CommandBarPopup, CstmPopUp2 As CommandBarPopup

Dim CstmCtrl As CommandBarControl

Dim Exist As Boolean

'Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ всС ΠΏΠ°Π½Π΅Π»ΠΈ

For Each CstmBar In CommandBars

CstmBar.Enabled = False

Next CstmBar

'Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ панСль

Exist = False

For Each CstmBar In CommandBars

If CstmBar.Name = Β«Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню» Then

Exist = True

Exit For

End If

Next CstmBar

If Not Exist Then

Set CstmBar = CommandBars.Add(Name:="Π“ΠΎΠ»ΠΎΠ²Π½oe мСню", Position:=msoBarTop, MenuBar:=True, Temporary:=False)

End If

CstmBar.Enabled = True

CstmBar.Visible = True

'ДобавляСм мСню Π½Π° панСль

Exist = False

For Each CstmCtrl In CstmBar.Controls

If CstmCtrl.Caption = Β«&Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²Β» Then

Exist = True

Exit For

End If

Next CstmCtrl

If Not Exist Then

Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup, Before:=1)

CstmCtrl.Caption = Β«&Π’Π²ΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²Β»

'ДобавляСм Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ подмСню

Set CstmPopUpi =

CstmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUpi.Caption = Β« ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²Β»

Set CstmPopUp2 =

CstmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUp2.Caption = Β« финансовых»

'ДобавляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ подмСню

Set CstmCtrl =

CstmPopUpi.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = «Накладная»

CstmCtrl.OnAction = Β«Module1.InvoiceΒ»

Set CstmCtrl =

CstmPopUp2.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = Β«Π‘Ρ‡Π΅Ρ‚Β»

CstmCtrl.OnAction = Β«Module1.AccountΒ»

End If

End Sub

ПояснСния ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. Π’Π½Π°Ρ‡Π°Π»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойство Enabled, Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ всС ΠΏΠ°Π½Π΅Π»ΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π»ΠΎ сформировано Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ мСню с двумя подмСню ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, содСрТащСС всСго ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ провСряСтся, Π° Π½Π΅ Π±Ρ‹Π» Π»ΠΈ ΠΎΠ½ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½. Подобная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ.

4. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ восстановлСния ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Public Sub ResetMainMenu()

Dim CstmBar As CommandBar

'Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ всС ΠΏΠ°Π½Π΅Π»ΠΈ

For Each CstmBar In CommandBars

CstmBar.Enabled = True

Next CstmBar

Set CstmBar = CommandBars.Item(Β«Menu BarΒ»)

CstmBar.Visible = True

End Sub

5. ΠŸΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ».

Private Sub CommandButton1_Click()

Call CreateCustomMenu

End Sub

6. ΠŸΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠžΡ‚ΠΌΠ΅Π½Π°Β», Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ стандартноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅.

Private Sub CommandButton2_Click()

Call ResetMainMenu

End Sub

7. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Ρ‹Π» Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π²Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ мСню Накладная ΠΈ Π‘Ρ‡Π΅Ρ‚:

Public Sub Invoice()

MsgBox («Накладная!»)

End Sub

Public Sub Account()

MsgBox (Β«Π‘Ρ‡Π΅Ρ‚!Β»)

End Sub

8. ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, запуститС Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.


Рис. 127. Π€ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 61 Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ