ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 18.06.2025
Просмотров: 8999
Скачиваний: 0
Выполните команду Вставка^Имя^Присвоить. Прокрутите список в диалоговом окне Присвоение имени и обратите внимание на поле Формула. Удалите те имена, которые ссылаются на другую рабочую книгу, или те, которые имеют неверные ссылки #ССЫЛ!. Таким образом, вы узнали о самых распространенных причинах возникновения "фантомных" связей.
Как распечатать полный путь и имя файла рабочей книги в колонтитуле страницы?
Если используется Excel 2002, то воспользуйтесь новой возможностью диалогового окна Параметры страницы. Когда это диалоговое окно отображено, перейдите на вкладку Колонтитулы и щелкните на кнопке Соэд;ать колонтитул. Будет отображено новое диалоговое окно, которое используется для добавления кода, обеспечивающего печать пути и имени файла рабочей книги в колонтитуле страницы. Обратите внимание: если рабочая книга не сохранена, то путь может оказаться неверным (в подобном случае используется путь по умолчанию для сохранения рабочих книг).
Для более старых версий Excel необходимо воспользоваться макросом VBA и обработать событие WorkbookBef o r e P r i n t . Например, разместите следующую процедуру в модуле кода объекта ЭтаКнига, Такой код будет печатать полный путь и имя файла рабочей книги в левой части верхнего колонтитула на каждой странице:
Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each sht In ThisWorkbook.Sheets
sht.PageSetup.LeftHeader = ThisWorkbook.FullName Next sht
End Sub
Я слышал, что некоторые программы имеют "секретные" команды, которые отображают список разработчиков программы. Существуют ли такие команды в Excel?
Такие скрытые сообщения иногда называются "пасхальными яйцами" (Easter Eggs). Каждая версия Excel содержит собственное сообщение Easter Egg. Для того чтобы просмотреть такое сообщение в Excel 2000, выполните следующую последовательность действий.
1.Откройте новую рабочую книгу Excel.
2.Нажмите клавишу <F5>.
3.Введите X2000:L2000 и нажмите клавишу <Enter>.
4.После этого активной должна стать ячейка 2000.
5.Один раз нажмите клавишу <ТаЬ>, что приведет к перемещению курсора в столбец М.
6.Удерживайте клавиши <Ctrl> и <Shift> и щелкните правой кнопкой мыши на пиктограмме Мастер диаграмм на панели инструментов Стандартная. Некоторые пользователи сообщали, что щелкать необходимо левой кнопкой мыши.
После этого на экране должен быть отображен список разработчиков Excel 2000.
А как насчет такого сообщения в Excel 2002?
На момент выхода оригинала книги в печать таких сообщений в Excel 2002 обнаружено не было (если они вообще существуют). Для получения последней информации о Easter Egg в Excel посетите узел автора книги по адресу h t t p : //www. j - w a l k . c o m / s s / e x c e l / e a s t e r e g g . h t m . Microsoft получала довольно много жалоб, связанных с Easter Egg, поэтому очень возможно, что практика создания таких сообщений прекращена.
710 |
Глава 30. Часто задаваемые вопросы о программировании в Excel |
Редактор Visual Basic
В Excel 95 мои модули кода VBA были расположены в рабочей книге, но если рабочую книгу открыть в Excel 97, то модули кода исчезнут.
Модули остались в рабочей книге, однако для того, чтобы их просмотреть и отредактировать, необходимо воспользоваться редактором VBE. Комбинация клавиш <Alt+Fll> применяется для переключения между Excel и редактором VBE.
Можно ли использовать программу записи макросов VBA для записи всех макросов?
Нет. Запись макросов подходит только для очень простых операций. Макросы, которые задействуют переменные, циклы или прерывают поток выполнения операций, записать невозможно. Но вы вправе воспользоваться командой записи макросов для создания фрагментов кода, а также для получения информации о необходимых свойствах и методах.
Excel 95 предоставляла возможность установки "метки" в макросе, что позволяло записывать команды, начиная с указанного места в существующем макросе. Доступна ли эта возможность в поздних версиях?
Нет. Такая возможность отсутствует, начиная с Excel 97. Для того чтобы добавить код записанного макроса в существующий макрос, необходимо записать макрос, скопировать требуемый код и вставить его в существующий макрос.
Я создал универсальные макросы, которые должны быть доступны все время. Как следует обеспечить постоянный доступ к ним?
Можно сохранить макросы в персональной книге макросов. Это (обычно) скрытая рабочая книга, которая загружается в Excel автоматически. После записи макроса у вас появляется возможность сохранить его в персональной книге макросов. Ее файл P e r s o n a l . x l s находится в папке \ X L S t a r t .
Я не могу найти свою персональную книгу макросов. Где она?
Файл P e r s o n a l . x l s не будет существовать до тех пор, пока в него не записан хотя бы один макрос.
Каждый раз, когда макрос Excel 97 копирует рабочий лист, новый лист отображается в окне Project в редакторе VBE с именем
Sheeti 1111111111(Sheet1 (9)). Что происходит?
Эти странные имена являются "кодовыми названиями" объектов Worksheet . Если выполнять большое количество операций копирования рабочих, листов, то имена быстро "удлиняются". Помните, что название рабочего листа не может состоять из более чем 32 символов — в таком случае Excel аварийно завершит работу. Кодовое имя можно заменить на более описательное с помощью окна Properties редактора VBE. Эта проблема была исправлена в Excel 2000.
ЧастьVII.Другиетемы |
711 |
Я заблокировал проект VBA с помощью пароля и забыл пароль. Существует ли способ разблокировать проект?
Существует несколько программ взлома паролей, которые предоставляются независимыми производителями. Для их поиска можно воспользоваться одним из поисковых средств в Web. В поиске вам помогут ключевые слова Excel password. Существование подобных программ говорит о том, что пароли Excel не настолько надежны, как того хотелось бы.
Как можно записать макрос для изменения пароля проекта?
Это невозможно. Средства защиты проекта VBA не предоставляются в объектной модели. Скорее всего, такой шаг сделан для усложнения работы программного обеспечения по взлому паролей.
При добавлении новый модуль всегда начинается со строки Option Explicit. Что она означает?
Если строка O p t i o n E x p l i c i t находится в начале модуля, это означает, что необходимо объявлять все переменные, которые будут использоваться в пределах данного модуля (достаточно неплохая идея). Если требуется, чтобы эта строка не добавлялась в новые модули, запустите VBE и выберите Tools^Options (Сервис^Парамстры). Перейдите на вкладку Editor (Редактор) и сбросьте флажок Require Variable Declaration (Явное описание переменных). После этого можно объявлять переменные или переложить задачу определения типа данных на плечн интерпретатора VBA.
Почему мой код VBA отображается другим цветом? Можно ли изменить эти цвета?
VBA использует цвета для выделения различных текстов в коде: комментариев, ключевых слов, идентификаторов, операторов с синтаксическими ошибками и т.д. Эти цвета можно переопределять, изменять шрифты, которые используются для выделения, и т.д. Воспользуйтесь командой ToolS^Options (и перейдите на вкладку Editor Format (Формат редактора)) в редакторе VBE.
Мне необходимо удалить модуль VBA с помощью кода VBA. Возможно ли это?
Да. Следующий код удаляет модуль Modulel из активной рабочей книги.
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modulel") End With
Этот код может не работать в Excel 2002. Дополнительная информация приводится далее.
Я создал макрос для Excel 2000, который добавляет код VBA к проекту. Когда я запустил его в Excel 2002, то получил сообщение об ошибке. Что я делаю неправильно?
Excel 2002 имеет новый параметр: Доверять доступ к Visual Basic Project. По умолчанию этот параметр отключен. Для того чтобы его включить, выберите Сервис^Макрос1 ^ Безопасность и перейдите на вкладку Надежные источники в диалоговом окне Безопасность.
772 |
Глава 30. Часто задаваемые вопросы о программировании в Excel |
Как изменить параметры безопасности макросов для пользователя? Я хочу отключить появление сообщения "Эта рабочая книга содержит макросы", когда открывается приложение.
Изменение уровня безопасности с помощью кода VBA приведет к полной бесполезности всей системы безопасности макросов. Подумайте над этим.
При открытии рабочей книги я получаю стандартное предупреждение о наличии макросов. Но я удалил все макросы из этой рабочей книги! Это вирус?
Скорее всего, нет. Кроме удаления макросов, необходимо удалить и модуль VBA. который содержал эти макросы.
Я не понимаю, как работает параметр UserlnterfaceOnly при защите рабочего листа.
Для зашиты рабочего листа можно использовать следующий оператор.
ActiveSheet.Protect UserlnterfaceOnly:=True
Это приведет к защите листа, но макрос все же сможет вносить изменения в содержимое листа. Важно понимать, что этот параметр не сохраняется вместе с рабочей книгой. Когда рабочая книга открывается снова, необходимо повторно выполнить этот оператор, чтобы опять установить защиту U s e r l n t e r f a c e O n l y .
Как узнать, находится ли в рабочей книге макровирус?
В редакторе VBE активизируйте проект, который соответствует рабочей книге. Просмотрите все модули кода и обратите внимание на код VBA, который вам не знаком. Обычно код вируса плохо форматирован и содержит большое количество переменных со странными названиями. Еще одной возможностью является использование коммерческих программ для сканирования вирусов.
У меня возникли проблемы с оператором конкатенации (&) BVBA. Как только я пытаюсь конкатенировать две строки, то получаю сообщение об ошибке.
Скорее всего, VBA интерпретирует амперсант, как символ обьявления типа. Удостоверьтесь, что перед и после оператора конкатенации добавлены пробеды.
Не получается заставить работать символ продолжения строки в VBA (подчеркивание).
Для продолжения строки используются два символа: пробел и после него символ подчеркивания.
В Excel 95 я настроил модуль VBA на "режим максимальной невидимости", чтобы пользователи не могли просмотреть его содержимое. Когда рабочая книга открывается в Excel 97, модуль можно просматривать в VBE. Так и должно быть?
Я не знаю, должно ли так быть, но именно так все и происходит. Excel 91 и более поздние версии программы не поддерживают свойство xlVeryHidden .
ЧастьVII.Другиетемы |
713 |
После удаления большого количества кода VBA я обратил внимание на то, что размер файла XLS не уменьшился соответствующим образом. Почему?
Excel не всегда правильно очищает данные. Это иногда приводит к некоторым скрытым проблемам с переменными, которые больше не используются. Одним из способов решения этой проблемы является экспортирование модуля в файл, удаление модуля и его повторное импортирование.
Я распространил приложение XLS среди большого количества пользователей. В некоторых компьютерах процедуры обработки ошибок не работают. Почему?
Процедуры обработки ошибок не будут работать, если у пользователей установлен параметр Break on All Errors (Остановка при любой ошибке). Этот параметр доступен в диалоговом окне Options (на вкладке General (Общие)) редактора VBE. К сожалению, данный параметр невозможно изменить с помощью кола VBA. Для того чтобы избежать возникновения подобной проблемы, распространяйте приложение в виде надстройки XLA.
Процедуры
Какая разница между процедурой VBA и макросом?
Никакой. Термин макрос (macro) "пришел" из ранней эпохи развития электронных таблиц. Эти термины сейчас являются взаимно заменяемыми.
Что такое процедура?
Процедура — это набор операторов VBA, который можно вызвать по имени. Если операторы должны возвратить явный результат (например, значение) процедуре, которая их вызывала, то эта процедура называется функцией и объявляется как F u n c t i o n . В противном случае процедура объявляется как Sub.
Что такое переменный тип данных?
Переменные, тип данных которых явно не определен, получают переменный тип данных. При использовании таких переменных VBA автоматически меняет тип переменной в соответствии с присвоенным значением. Это особенно полезно при получении значений из рабочего листа, так как заранее не известно, что содержится в ячейках. Рекомендуется явно объявлять тип переменной. Для этого используются операторы Dim, P u b l i c и P r i v a t e . Применение переменных типов данных замедляет работу приложения и вызывает неэффективное использование ресурсов памяти.
Какая разница между массивом переменного типа и массивом значений переменного типа?
Ячейка памяти переменного типа может содержать любой тип данных: единственное значение или массив значений (массив переменного типа). Следующий код создает переменную, которая содержит массив.
Dim X As Variant
X = Array(30, 40, 50)
714 Глава 30. Часто задаваемые вопросы о программировании в Excel