Электронная библиотека » Алексей Гладкий » » онлайн чтение - страница 15

Текст книги "Excel. Трюки и эффекты"


  • Текст добавлен: 22 ноября 2013, 19:01


Автор книги: Алексей Гладкий


Жанр: Программы, Компьютеры


сообщить о неприемлемом содержимом

Текущая страница: 15 (всего у книги 22 страниц) [доступный отрывок для чтения: 6 страниц]

Шрифт:
- 100% +
Помещение последнего символа ячейки над строкой

Рассматриваемый в данном подразделе трюк позволяет преобразовать последний символ ячейки в верхний индекс. Для этого следует применить макрос, приведенный в листинге 3.65.

Листинг 3.65. Помещение последнего символа над строкой

Sub LastCharUp()

' Изменение расположения последнего символа ячейки

With ActiveCell.Characters(Start:=Len(Selection),

Length:=1).Font

.Superscript = True

End With

End Sub

В результате выполнения макроса можно в ячейке вместо значения, например, м3 получить значение м3. При этом следует учитывать, что данный макрос не преобразует числовые значения (например, представление числа 72 не изменится).

Создание нестандартной рамки

Возможности программы позволяют быстро заключить в рамку выделенный диапазон, изменив при этом вид сетки. Для достижения такого эффекта достаточно применить следующий макрос (листинг 3.66).

Листинг 3.66. Нестандартная рамка

Sub ChangeSelGrid()

' Оформление границ выделения

' Левая граница

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

' Правая граница

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

' Верхняя граница

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

' Нижняя граница

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

' Изменение сетки внутри выделения

' Вертикальные линии сетки

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.Weight = xlHairline

.ColorIndex = xlAutomatic

End With

' Горизонтальные линии сетки

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.Weight = xlHairline

.ColorIndex = xlAutomatic

End With

End Sub

Результат применения макроса показан на рис. 3.20.

На рисунке видно, что диапазон ячеек ограничен рамкой, а сетка внутри его представлена в виде пунктирных линий.

Рис. 3.20. Рамка и сетка

Быстрая вставка фамилий должностных лиц в документ

Трюк, который мы рассмотрим в данном разделе, позволяет быстро вставить в любое место документа определенный заранее текст. Такую возможность удобно использовать, например, для вставки в документ должностей и фамилий директора и главного бухгалтера предприятия (либо других сотрудников). Подобная задача реализуется при использовании макроса, код которого приведен в листинге 3.67.

Листинг 3.67. Вставка текста в документ

Sub InsertCustomText()

' Заполнение текущей ячейки

ActiveCell = «Генеральный директор»

Selection.Font.Bold = True

' Фамилия на три столбца правее должности

Cells(ActiveCell.Row, ActiveCell.Column + 3).Select

ActiveCell.FormulaR1C1 = «А. Б. Рублев»

Selection.Font.Bold = True

' Ячейка с «Главный бухгалтер» на три столбца левее _

и на три строки ниже ячейки с фамилией директора

Cells(ActiveCell.Row + 3, ActiveCell.Column – 3).Select

ActiveCell = «Главный бухгалтер»

Selection.Font.Bold = True

' Фамилия на три столбца правее должности

Cells(ActiveCell.Row, ActiveCell.Column + 3).Select

ActiveCell = «Т. С. Копейкин»

Selection.Font.Bold = True

End Sub

После выполнения данного макроса соответствующий текст будет вставлен в том месте документа, где расположен курсор (рис. 3.21).

Рис. 3.21. Вставка текста в документ


Очевидно, что с помощью приведенного выше макроса можно вставлять в текущий документ любой произвольный текст.

Вызов окна настройки шрифта

С помощью небольшого макроса можно вызывать окно настройки параметров шрифта. Код этого макроса выглядит так (листинг 3.68).

Листинг 3.68. Окно настройки шрифта

Sub ShowFontDialog()

' Вызов стандартного окна настройки шрифта текущей ячейки

Application.Dialogs(xlDialogActiveCellFont).Show

End Sub

После его выполнения откроется окно Формат ячеек, в котором выполняются необходимые действия. Заданные в данном окне настройки применяются к ячейке, в которой установлен курсор.

Вывод информации о текущем документе

Чтобы быстро вывести на экран информацию об имени текущего файла, названии текущего рабочего листа и количестве листов в текущей рабочей книге, можно использовать макрос, код которого приведен в листинге 3.69.

Листинг 3.69. Информация о текущем документе

Sub ShowInfo()

Dim i As Integer

' Выводим имя файла рабочей книги

Range(«A1») = ActiveWorkbook.Name

' Выводим имя текущего листа

Range(«B1») = ActiveSheet.Name

' Выводим номера листов

For i = 1 To ActiveWorkbook.Sheets.Count

ActiveSheet.Cells(i, 3) = i

Next i

End Sub

Результат выполнения макроса представлен на рис. 3.22.

Рис. 3.22. Информация о текущем файле


В данном случае в ячейке А1 отображается имя текущего файла, в ячейке В1 – имя активного рабочего листа, а в столбце С – информация о количестве рабочих листов в текущей книге.

Вывод результата расчетов в отдельном окне

Выполнив несложный трюк, можно вывести результат расчетов, полученный с помощью формулы, в отдельном информационном окне. Для этого можно создавать самые разнообразные макросы (в зависимости от сложности расчета, содержимого ячеек и формул и т. д.). В листинге 3.70 приведен пример одного из таких макросов.

Листинг 3.70. Окно с результатом расчетов

Sub ResultToWindow()

' Переходим на первый лист

Worksheets(1).Activate

' Заносим в ячейки данные

Range(«A2») = 5

Range(«A3») = «=A2+3»

' Выводим результат расчета

MsgBox Range(«A3»).Formula + " = " + str(Range(«A3»).Value)

End Sub

Результат выполнения данного макроса показан на рис. 3.23.

Рис. 3.23. Формула и результат


Кроме того, после выполнения макроса в ячейке А2 появится значение 5, а в ячейке A3 – 8.

Вывод разрешения монитора

Разрешение монитора просматривается и редактируется в окне свойств экрана (Пуск → Настройка → Панель управления → Экран → Параметры). Однако для просмотра разрешения можно написать соответствующий макрос (листинг 3.71). Чтобы определить разрешение монитора, следует использовать функцию Windows API GetSystemMetrics. В качестве единственного параметра она принимает номер системной настройки, значение которой необходимо узнать (в данном случае 0 – это ширина изображения, 1 – высота). Функция GetSystemMetrics возвращает численное значение запрашиваемого параметра.

Листинг 3.71. Разрешение монитора

' Объявление API-функции

Declare Function GetSystemMetrics Lib «user32» _

(ByVal nIndex As Long) As Long

' Константы, которые передаются в функцию для определения _

горизонтального и вертикального размеров изображения

Const SM_CXSCREEN = 0

Const SM_CYSCREEN = 1

Sub GetMonitorResolution()

Dim lngHorzRes As Long

Dim lngVertRes As Long

' Получение ширины и высоты изображения на мониторе

lngHorzRes = GetSystemMetrics(SM_CXSCREEN)

lngVertRes = GetSystemMetrics(SM_CYSCREEN)

' Отображение сообщения

MsgBox "Текущее разрешение: " & lngHorzRes & "x" & lngVertRes

End Sub

После того как запущен макрос (в окне выбора макросов он будет называться GetMonitorResolution), на экране отобразится окно, в котором будет показано текущее разрешение монитора.

Что открыто в данный момент?

При работе с большим количеством рабочих книг иногда возникает необходимость быстро узнать, какие из них открыты в данный момент. Решить эту задачу поможет следующий макрос (листинг 3.72).

Листинг 3.72. Открытые файлы

Sub WorkBooksList()

Dim book As Object

' Вывод имени каждой рабочей книги

For Each book In Workbooks

MsgBox (book.Name)

Next

End Sub

После выполнения данного макроса откроется окно с именем текущей рабочей книги. После нажатия в данном окне кнопки ОК в нем будет указано имя другой открытой книги, затем после нажатия ОК – следующей и т. д. Таким образом можно быстро просмотреть названия всех открытых рабочих книг.

Если книга содержит большое количество рабочих листов, то быстро просмотреть их названия можно с помощью следующего макроса (листинг 3.73). Этот макрос отображает названия всех листов текущей рабочей книги.

Листинг 3.73. «Перелистывание» книги

Sub SheetsOfBook()

Dim sheet As Object

' Отображение имен всех листов активной рабочей книги

For Each sheet In ActiveWorkbook.Sheets

MsgBox (sheet.Name)

Next

End Sub

После запуска макроса на экране отобразится такое же окно, как при выполнении предыдущего макроса. В нем будет указано название первого рабочего листа текущей книги, а затем, после каждого нажатия кнопки ОК, – названия последующих листов.

Создание бегущей строки

Можно ли в Excel создать бегущую строку? Да, можно, и поможет нам в этом код, приведенный в листинге 3.74.

Листинг 3.74. Создание бегущей строки

Dim intSpacesLeft As Integer ' Количество пробелов в начале

строки

Sub Start()

' Установка начального количества пробелов

intSpacesLeft = 10

' Первый вызов функции бегущей строки

MovingString

End Sub

Sub MovingString()

If intSpacesLeft >= 0 Then

' Отображение строки

Range(«A1»).Value = Space(intSpacesLeft) & «Привет!»

intSpacesLeft = intSpacesLeft – 1

' Указывем Excel, что данную процедуру нужно вызвать через _

1 секунду

Application.OnTime Now + TimeValue(«00:00:01»),

«MovingString»

End If

End Sub

После запуска макроса Start в ячейке Al будет отображаться бегущая строка с текстом Привет!.

Мигающая ячейка

Рассмотрим достаточно интересный трюк, с помощью которого можно заставить мигать (то есть попеременно изменять цвета) любую ячейку в течение некоторого промежутка времени.

Предположим, что нам необходима ячейка, которая 10 раз каждые 5 секунд будет изменять цвет фона с красного на зеленый. Для решения этой задачи воспользуемся следующим макросом (листинг 3.75).

Листинг 3.75. Мигание ячейки

Sub BlinkingCell()

Static intCalls As Integer ' Счетчик количества миганий

' Если ячейка мигала менее 10 раз, то изменим _

в очередной раз ее цвет

If intCalls < 10 Then

intCalls = intCalls + 1

' Определение, какой цвет необходимо установить

If Range(«A1»).Interior.Color <> RGB(255, 0, 0) Then

' Цвет ячейки не красный, так что теперь назначим _

именно красный цвет

Range(«A1»).Interior.Color = RGB(255, 0, 0)

Else

' Назначим ячейке зеленый цвет

Range(«A1»).Interior.Color = RGB(0, 255, 0)

End If

' Эту процедуру необходимо вызвать через 5 секунд

Application.OnTime Now + TimeValue(«00:00:05»),

«BlinkingCell»

Else

' Хватит мигать

Range(«A1»).Interior.ColorIndex = xlNone

intCalls = 0

End If

End Sub

После запуска макроса BlinkingCell будет мигать ячейка Al. Путем внесения соответствующих изменений в приведенный макрос можно регулировать продолжительность цикла и изменять цвета фона по своему усмотрению.

Вращающиеся автофигуры

Можно ли заставить автофигуры вращаться? Оказывается, можно, и это вовсе не так сложно, как кажется на первый взгляд. В этом разделе мы рассмотрим, каким образом можно заставить перемещаться с одновременным вращением сразу две автофигуры.

Для реализации данного трюка нам нужно в первую очередь написать макрос, код которого представлен в листинге 3.76 (этот код нужно поместить в стандартный модуль редактора VBA).

Листинг 3.76. Вращение автофигур

Sub RotatingAutoShapes()

Static fRunning As Boolean

' Проверка, выполняется ли уже этот макрос

If fRunning Then

' При повторном запуске останавливаем все запущенные макросы

fRunning = False

End

End If

' Укажем, что макрос запущен

fRunning = True

Dim cell As Range ' Рабочая ячейка

Dim intLeftBorder As Long ' Левая граница ячейки

Dim intRightBorder As Long ' Правая граница ячейки

Dim intTopBorder As Long ' Верхняя граница ячейки

Dim intBottomBorder As Long ' Нижняя граница ячейки

Dim alngVertSpeed(1 To 2) As Long ' Массивы со значениями

Dim alngHorzSpeed(1 To 2) As Long ' горизонтальной и вертикальной

' составляющих скоростей

фигур

Dim ashShapes(1 To 2) As Shape ' Массив перемещаемых

автофигур

Dim i As Integer

' Заполнение массива автофигур

Set ashShapes(1) = ActiveSheet.shapes(1)

Set ashShapes(2) = ActiveSheet.shapes(2)

' Заполнение массива скоростей:

' для первой фигуры

alngVertSpeed(1) = 3

alngHorzSpeed(1) = 3

' для второй фигуры

alngVertSpeed(2) = 4

alngHorzSpeed(2) = 4

' Получение границ рабочей ячейки

Set cell = Range(«B2»)

intLeftBorder = cell.Left

intRightBorder = cell.Left + cell.Width

intTopBorder = cell.Top

intBottomBorder = cell.Top + cell.Height

' Выполнение вращения и перемещения фигур

Do

' Изменение положения каждой автофигуры

For i = 1 To 2

With ashShapes(i)

' Контроль достижения правой границы ячейки

If .Left + .Width + alngHorzSpeed(i) >

intRightBorder Then

' Корректировка положения

.Left = intRightBorder – .Width

' Изменение направления горизонтальной скорости _

на противоположное

alngHorzSpeed(i) = -alngHorzSpeed(i)

End If

' Контроль достижения левой границы ячейки

If .Left + alngHorzSpeed(i) < intLeftBorder Then

' Корректировка положения

.Left = intLeftBorder

' Изменение направления горизонтальной скорости _

на противоположное

alngHorzSpeed(i) = -alngHorzSpeed(i)

End If

' Контроль достижения нижней границы ячейки

If .Top + .Height + alngVertSpeed(i) >

intBottomBorder Then

' Корректировка положения

.Top = intBottomBorder – .Height

' Изменение направления вертикальной скорости _

на противоположное

alngVertSpeed(i) = -alngVertSpeed(i)

End If

' Контроль достижения верхней границы ячейки

If .Top + alngVertSpeed(i) < intTopBorder Then

' Корректировка положения

.Top = intTopBorder

' Изменение направления вертикальной скорости _

на противоположное

alngVertSpeed(i) = -alngVertSpeed(i)

End If

' Перемещение автофигуры

.Left = .Left + alngHorzSpeed(i)

.Top = .Top + alngVertSpeed(i)

' Вращение автофигуры (изменение направления вращения _

происходит каждый раз при изменении направления _

вертикального перемещения)

.IncrementRotation alngVertSpeed(i)

' Даем Excel команду обработать пользовательский ввод

DoEvents

End With

Next

Loop

End Sub

Теперь в ячейке B2 нужно создать две любые автофигуры (перед этим ячейку В2 следует существенно увеличить, сделав ее размером примерно с четверть экрана, чтобы было место для вращения автофигур).

Примечание

Адрес ячейки можно устанавливать любой, но для этого необходимо внести соответствующие изменения в код макроса.

Теперь, запустив созданный макрос, полюбуйтесь результатом своей работы – автофигуры будут вращаться и одновременно перемещаться в пределах указанной ячейки. При желании можно раскрасить автофигуры в разные цвета и установить какой-нибудь фон для ячейки.

Вызов таблицы цветов

При необходимости можно вывести на экран таблицу цветов и соответствующих значений свойства Colorlndex (данное свойство задает индексированный цвет заливки в соответствии с палитрой цветов). Для этого создадим и запустим следующий макрос (листинг 3.77).

Листинг 3.77. Отображение таблицы цветов

Sub ShowColorTable()

Dim intColor As Integer

' Формирование заголовка таблицы

Range(«A1»).Value = «Цвет»

Range(«B1»).Value = «Значение свойства ColorIndex»

' Вывод таблицы

Range(«A2»).Select

For intColor = 1 To 56

' Окрашиваем ячейку столбца "A" в текущий цвет

With ActiveCell.Interior

.ColorIndex = intColor

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

End With

' В ячейку столбца "B" вносим индекс текущего цвета

ActiveCell.Offset(0, 1).Value = intColor

' Переходим на следующую строку

ActiveCell.Offset(1, 0).Activate

Next

' Покажем ячейку «A1» (начало таблицы)

Range(«A1»).Select

ActiveWindow.ScrollRow = 1

End Sub

В результате выполнения макроса откроется таблица, изображенная на рис. 3.24.

Рис. 3.24. Таблица цветов


В столбце А данной таблицы отображается перечень цветов, а в столбце В – соответствующие им значения свойства Colorlndex. На рисунке показан лишь фрагмент таблицы, поскольку полностью она состоит из 56 строк.

Создание калькулятора

Используя средства языка VBA, можно быстро создать простейший калькулятор, предназначенный для вычисления значений арифметических выражений. Пример макроса, который позволяет это сделать, приведен в листинге 3.78.

Листинг 3.78. Создание калькулятора

Sub SimpleCalculator()

Dim strExpr As String

' Ввод выражения

strExpr = InputBox(«Что будем считать?»)

' Подсчет и вывод результата

MsgBox strExpr & " = " & Application.Evaluate(strExpr)

End Sub

После выполнения данного макроса появится окно, изображенное на рис. 3.25.

Рис. 3.25. Калькулятор


В данном окне с клавиатуры следует ввести выражение, значение которого необходимо вычислить, и нажать кнопку ОК либо клавишу Enter. Результат расчета будет показан в информационном окне (рис. 3.26).

Рис. 3.26. Результат расчета


Если строку макроса strExpr = InputBox («Что будем считать?») написать в виде, например, strExpr = InputBox («Быстрое вычисление»), то окно ввода выражения будет выглядеть, как на рис. 3.27.

Рис. 3.27. Замена текста


Окно результата расчета при этом не изменится (рис. 3.28).

Рис. 3.28. Окно результата расчета

Еще о создании пользовательских меню

Мы уже рассматривали некоторые способы создания пользовательского меню (см. выше раздел «Формирование пользовательского меню»). Предлагаемый же в данном разделе пример является более масштабным, потому что в нем можно увидеть команды созданного меню «в работе» (то есть при выполнении команды на экране отобразится определенный результат).

Сначала рассмотрим создание пользовательского меню, которое полностью состоит из пользовательских команд. После этого реализуем меню, в котором наряду с пользовательскими будут и штатные средства Excel.

Меню с пользовательскими командами

Для реализации данного трюка нам потребуется создать два кода. Один из них будет помещен в модуль ЭтаКнига, а другой – в стандартный модуль. Первый код выглядит следующим образом (листинг 3.79).

Листинг 3.79. Код в модуле ЭтаКнига

Sub Workbook_Open()

' Задание имени меню

strMenuName = «MyCommandBarName»

' Создание меню

CreateCustomMenu

End Sub

Sub Workbook_BeforeClose(Cancel As Boolean)

' Удаление меню перед закрытием книги

DeleteCustomMenu

End Sub

Второй код необходимо набрать в любом стандартном модуле. В нем определяется структура пользовательского меню и порядок его работы. Содержимое данного кода представлено в листинге 3.80.

Листинг 3.80. Код в стандартном модуле

Public strMenuName As String ' Имя строки меню

Private cbrcBar As CommandBarControl

Sub CreateCustomMenu()

Dim cbrMenu As CommandBar

Dim cbrcMenu As CommandBarControl ' Выпадающее меню «Меню»

Dim cbrcSubMenu As CommandBarControl ' Выпадающее меню

«Дополнительно»

' Если уже есть пользовательское меню, то оно удаляется

DeleteCustomMenu

' Создание меню вместо стандартного

Set cbrMenu = Application.CommandBars.Add(strMenuName,

msoBarTop, _

True, True)

' Создание выпадающего меню с названием «Меню»

Set cbrcMenu = cbrMenu.Controls.Add(msoControlPopup, , , ,

True)

With cbrcMenu

.Caption = «&Меню»

End With

' Создание пункта меню

With cbrcMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «&Меню1»

.OnAction = «CallMenu1»

End With

' Создание пункта меню

With cbrcMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «Меню2»

.OnAction = «CallMenu2»

End With

' Создание подменю первого уровня

Set cbrcSubMenu = cbrcMenu.Controls.Add(Type:=msoControlPopup, _

Temporary:=True)

With cbrcSubMenu

.Caption = «Подменю1»

.BeginGroup = True

End With

' Создание пункта меню

With cbrcMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «Вкл/Выкл»

.OnAction = «MenuOnOff»

.Style = msoButtonIconAndCaption

.FaceId = 463

End With

' Создание пункта меню в подменю первого уровня

With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «Подменю1»

.OnAction = «CallSubMenu1»

.Style = msoButtonIconAndCaption

.FaceId = 2950

.State = msoButtonDown

End With

' Cоздание пункта меню в подменю первого уровня (его состояние _

изменяется посредством пункта «Вкл/Выкл»), для чего сохраним ссылку _

на созданный пункт меню

Set cbrcBar = cbrcSubMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

With cbrcBar

.Caption = «Подменю2»

.OnAction = «CallSubMenu2»

“ Сначала меню деактивировано

.Enabled = False

End With

' Создание подменю второго уровня

Set cbrcSubMenu = cbrcSubMenu.Controls.Add(Type:=msoControlPopup, _

Temporary:=True)

With cbrcSubMenu

.Caption = «ПодчПодменю1»

.BeginGroup = True

End With

' Cоздание пункта меню в подменю второго уровня

With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «ПослМеню1»

.OnAction = «CallLastMenu1»

.Style = msoButtonIconAndCaption

.FaceId = 71

.State = msoButtonDown

End With

' Cоздание пункта меню в подменю второго уровня

With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _

Temporary:=True)

.Caption = «ПослМеню2»

.OnAction = «CallLastMenu2»

.Style = msoButtonIconAndCaption

.FaceId = 72

.Enabled = True

End With

' Отображение меню

cbrMenu.Visible = True

Set cbrcSubMenu = Nothing

Set cbrcMenu = Nothing

Set cbrMenu = Nothing

End Sub

Sub DeleteCustomMenu()

' Удаление строки меню

On Error Resume Next

Application.CommandBars(strMenuName).Delete

On Error GoTo 0

End Sub

Sub CallMenu1()

' Обработка вызова Меню1

MsgBox «Приветствует меню 1!», vbInformation,

ThisWorkbook.Name

End Sub

Sub CallMenu2()

' Обработка вызова Меню2

MsgBox «Приветствует меню 2!», vbInformation,

ThisWorkbook.Name

End Sub

Sub CallSubMenu1()

' Обработка вызова Подменю1

MsgBox «Приветствует подменю 1!», vbInformation,

ThisWorkbook.Name

End Sub

Sub CallSubMenu2()

' Обработка вызова Подменю1

MsgBox «Приветствует подменю 2!», vbInformation,

ThisWorkbook.Name

End Sub

Sub CallLastMenu1()

' Обработка вызова Последнего меню1

MsgBox «Приветствует последнее меню 1!», vbInformation,

ThisWorkbook.Name

End Sub

Sub CallLastMenu2()

' Обработка вызова Последнего меню2

MsgBox «Приветствует последнее меню 2!», vbInformation,

ThisWorkbook.Name

End Sub

Sub MenuOnOff()

' Активация или деактивация пункта «Меню-Подменю1-Подменю2»

cbrcBar.Enabled = Not cbrcBar.Enabled

End Sub

Чтобы пользовательское меню отобразилось на вкладке Надстройки, необходимо запустить макрос CreateCustomMenu (после написания кода данный макрос будет доступен в окне выбора макросов). Результат представлен на рис. 3.29.

Рис. 3.29. Созданное пользовательское меню


Данное меню работает следующим образом: при выполнении любой его команды появляется окно с соответствующим сообщением (рис. 3.30). Исключение составляет команда Вкл/Выкл – с ее помощью осуществляется включение/выключение пункта Подменю1 → Подменю2.

Рис. 3.30. Результат выбора пункта Меню1


Чтобы вернуться в первоначальное состояние, необходимо воспользоваться макросом DeleteCustomMenu (в некоторых случаях для «отката» нужно закрыть рабочую книгу, затем вновь открыть ее и лишь после этого запустить макрос DeleteCustomMenu). Однако проще сделать по-другому: нужно щелкнуть правой кнопкой мыши на созданном меню и в открывшемся контекстном меню выполнить команду Удалить настраиваемую панель инструментов, после чего подтвердить удаление.


Страницы книги >> Предыдущая | 1 2 3 4 5 6
  • 4.6 Оценок: 5

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации