Знакомство со встроенными командами. Visual basic команды


Редактор Visual Basic Application

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

Главное окно редактора (рис.7) включает следующие элементы: окно проекта (Project), окно формы (UserForm), окно программного кода (Code), окно просмотра (Object Browser).

Рис. 7. Главное окно редактора Visual Basic

Структура программного кода VBA

Программа VBA представляет собой совокупность процедур и функций, размещённых, в зависимости от особенностей решаемой задачи, в одном или нескольких модулях (это специальные разделы Excel). Добавление модуля осуществляется по команде Insert→Module (в этом случае программный код составляется пользователем) или при создании макроса (когда программа создается автоматически). Созданному модулю присваивается стандартное имя Module1, Module2 и т.д.

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

Для удаления модуля следует: выделить имя модуля →- выбрать команду меню File → Remove Module→Щелкнуть в окне диалога на кнопке «Нет».

Макросы

Макрос - это последовательность команд и действий пользователя, записанная и хранимая внутри документа и исполняемая Excel так же, как пользователь производил эти действия. Последовательность действий пользователем выполняется один раз при записи макроса, затем автоматически производится Excel при каждом запуске макроса. Большинство команд, которые можно выполнить с использованием меню, клавиатуры или мыши, можно записать в макрос и выполнить их при необходимости. С помощью макроса можно строить числовые ряды, копировать таблицы, выполнять переход на нужные листы, сохранять информацию, работать в режиме ввода и т.д. Макрос записывается в виде процедуры с заданным именем в модуль. Имя макроса может состоять из букв, цифр и символа подчеркивания ( _ ).

Для записи макроса необходимо: выполнить команду Сервис → Макрос→Начать запись; в окне диалога «Запись макроса» задать имя макроса и сочетание клавиш для быстрого выполнения макроса; затем выполнить нужные действия; после чего закончить запись макроса по команде меню Сервис → Макрос → Остановить запись. При записи макроса используются команды меню, кнопки панели инструментов, ярлычки листов, клавиатура.

Рассмотрим создание макроса на конкретном примере. Необходимо создать макрос с именем «Ввод», выполняющий переход на Лист1 в открытой рабочей книге, ввод в диапазон ячеек А1:С1 заголовков столбцов, в ячейки А2 и В2 исходных данных, в ячейку С2 - результат перемножения значений ячеек А2 и В2 и возврат на Лист2.

Для записи макроса выполняем следующую последовательность действий:

  1. Создаем Книгу1.xls.

  2. Выбираем команду меню Сервис →Макрос→Начать запись. Откроется диалоговое окно «Запись макроса».

  3. Вводим с клавиатуры имя макроса «Ввод» и задаем сочетание клавиш нажатием на букву «в». В дальнейшем этот макрос будет выполняться при нажатии комбинации клавиш «Ctrl+в».

  4. Щелкаем на кнопке «ОК». Если была активна панель инструментов «Visual Basic», на ней появится кнопка «Остановить запись», говорящая о том, что можно выполнять действия для макроса.

  5. Переходим на Лист1, для этого щелкаем на ярлычке Лист1.

  6. Выделяем ячейку A1 и вводим слово «Цена».

  7. Выделяем ячейку B1 и вводим слово «Количество».

  8. Выделяем ячейку С1 и вводим слово «Стоимость».

  9. Выделяем ячейку A2 и вводим любое число.

  10. Выделяем ячейку В2 и вводим любое число.

  11. Выделяем ячейку С2 и вводим формулу =А2*В2. Щелкаем на кнопке «Остановить запись» или выбираем команду Сервис → Макрос→Остановить запись для завершения записи макроса. В результате наших действий формируется процедура. Чтобы ее просмотреть требуется выполнить команду меню Сервис→ Макрос → Макросы, выбрать в окне диалога макрос «Ввод» и нажать кнопку Изменить. После этого мы попадаем в режим редактора Visual Basic, где в специальном окне отображается программный код макроса (рис.8).

Рис.8. Вид окна программного кода с макросом

Макрос представляет процедуру, начинающуюся с ключевого слова Sub и заканчивающуюся словом End Sub. Первые строки процедуры являются комментариями, они содержат имя макроса, дату записи, автора и комбинацию клавиш. Далее следуют команды, записанные по правилам VBA. Каждая команда соответствует выполненному действию.

Рассмотрим подробно команды макроса.

Sheets("Лист1").Select'переход на Лист1. Данная команда состоит из указания на объект Sheets("Лист1") и метода Select для рабочего листа.

Range("A1").Select ‘выделение ячейки A1.

ActiveCell.FormulaR1C1 = "Цена"‘ввод текста в выделенную ячейку. Команда включает ссылку на активную ячейку, произведенную с помощью свойства ActiveCell, и свойство FormulaR1C1, которому присваивается значение Цена. Подробнее про адресацию ячеек см. в подразделе «Адресация ячеек в Excel».

Range("В1").Select ‘выделение ячейки В1.

ActiveCell.FormulaR1C1 = "Количество"‘ ввод текста в активную ячейку. Аналогично поступаем с ячейками С1, А2, В2. В ячейку С2 введем формулу:

ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"

Sheets("Лист2").Select ‘переход на Лист2.

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

    • Использовать комбинацию клавиши Ctrl и выбранной буквы, обращая внимание на регистр русских и латинских букв.

    • Выполнить команду меню Сервис → Макрос→Макросы. В окне диалога «Макрос» указать в списке имя нужного макроса и щелкнуть на кнопке Выполнить.

    • В окне редактора Visual Basic выбрать в списке процедур имя макроса и выполнить команду меню Run→ Sub/UserForm,

    • воспользоваться кнопкой панели инструментов или нажать клавишу F5 .

Формы

Для создания диалоговых окон приложений VBA служат пользовательские формы, на которых размещают нужные элементы управления. Для добавления формы в проект выполняется команда Insert-UserForm, на экране появится пустое окно редактирования формы и панель элементов. Редактор форм является основным инструментом визуального программирования.

Язык программирования VBA

Язык программирования VBA имеет свои правила написания программного кода. Он использует свой алфавит, включающий буквы латинского алфавита и кириллицу; цифры от 0 до 9;символ подчеркивания.

Из этих символов состоят имена процедур, переменных, меток переходов, константы и команды.

В состав алфавита также входят пробелы для отделения слов друг от друга и знаки операций (+ - * / ^ = > < ( ) [ ] { } ‘ & @ ), в том числе составные ( >=, <=, <>(знак «не равно»).

Программный код VBA представляет собой последовательность команд, записанных по правилам языка Basic. Имена переменных, констант, процедур обозначают посредством идентификаторов, учитывая при этом, что имя должно быть содержательным, оно должно начинаться с буквы, не должно содержать точки, пробела, разделительных символов, зарезервированных слов. Зарезервированные слова ( As, Public, Then, All и др) выводятся синим цветом. Примеры правильных имен: strMyName, strФамилия. Примеры неправильных имен: 2Week, Second.Week.

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

В VBA принято команду называть оператором, правило записи команды синтаксисом или форматом.

Операторы VBA имеют следующие форматы:

Объект.Свойство = Значение

Объект.Метод [Параметр1] [,Параметр2]…]

где:

Объект - имя объекта, для которого устанавливается свойство или метод. Обычно цепочка объектов начинается с объекта Application, который можно опускать. Например, ссылка Application.ActiveCell или просто ActiveCell - это обращение к активной ячейке. При работе с одной рабочей книгой объект WorkBook также можно опустить.

Свойство - характеристика объекта, подлежащая изменению.

Значение - новое состояние объекта.

Метод - команда или процедура.

Параметр - аргумент, используемый методом. Если параметров несколько, они разделяются запятой.

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

Если в командной строке нарушен синтаксис или сама команда неверна, она выделяется красным цветом.

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

Примеры:

Sheets(“Лист1”).Select-оператор выделения рабочего листа, где Sheets(“Лист1”) - объект, Select - метод..

Sheets(“Лист1”).Range(“A1”).Value = Sheets(“Выпуск продукции”).Range(“D5”)-оператор, присваивающий ячейке Лист1!А1 значение из ячейки Выпуск продукции!D5, Value - свойство.

Типы данных

В VBA все данные подразделяются на числа, текст, даты, логические и другие типы. Для числовых данных обычно применяют тип Integer (целочисленные значения в диапазоне от -32768 до +32767), Currency для хранения чисел с 4 знаками после десятичной точки и Single - для вещественных чисел одинарной точности. Для текстовых данных используется строковый тип String (содержит любые символы, строчные данные заключаются в кавычки).

Объявление переменных

Переменные - это имена, предназначенные для хранения и передачи данных. В различные моменты времени переменные могут иметь различные значения. Как правило, переменная имеет первоначальное значение, которое меняется в процессе работы подпрограммы. Имя переменной связывает ее с областью памяти, в которой хранится значение. Перед использованием переменной в программе ее желательно объявить с помощью оператора Dim. При объявлении переменных указывается ее имя и тип, который определяет способ представления переменной. Например, текстовая переменная имеет тип String, переменная целого числа – Integer, дата - Date.

В небольших приложениях переменную можно использовать без объявления, присваивая ей какое-либо значение, но явное объявление предпочтительней.

Синтаксис:

| Dim ИмяПеременной1 [As Тип],ИмяПеременной2 [As Тип],

где:

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

ИмяПеременной - идентификатор, определяющий допустимое имя.

As - ключевое слово для определения типа.

При определении переменной после ввода ключевого слова As появится список-подсказка для выбора нужного типа.

Примеры:

Dim tovar As String - текстовая переменная,

Dim Cost As Integer- переменная типа целое число.

studfiles.net

Интерфейс пользователя vba

Для разработки макросов и функций используется специальная среда программирования. Для перехода в нее из Excel или Word нужно выполнить команду "Сервис/Макрос/Редактор Visul Basic", либо нажать клавиши <Alt>+<Fll>. Вернуться обратно можно через панель задач или по <Alt>+<Fl 1>.

Среда программирования представлена системой меню, панелей управления и трех основных окон. Надо отметить, что пользователь имеет возможность менять вид и состав среды разработки, настраивая ее так, как ему удобно. Среди окон выделим окно редактирования тек­стов программ, в котором происходит основная работа по написанию и отладке макросов и специализированных функций пользователя. Оно появляется после добавления модуля пользователя и располагается в правой части экрана. Запись команд, составляющих макросы и функ­ции, выполняется в этом окне с помощью редактора программ.

Редактор программ VBA - это обычный текстовый редактор, об­ладающий стандартным набором возможностей типичного текстового редактора (например, WordPad). Однако он дополнен рядом специали­зированных функций. Например, его можно настроить таким образом, чтобы при написании пользователем части служебного слова он мог самостоятельно дополнять это слово. Это, с одной стороны, ускоряет ввод текста команд, а с другой — уменьшает вероятность ошибок. Слу­жебные слова можно писать буквами одного размера - например, строч­ными. При переходе на другую строку, если в команде не было допущено ошибок, все служебные слова, имена встроенных функций, объектов и их свойств автоматически записываются правильно. Например, если напи­сать "activesheet", то при переходе на другую строку это слово будет пре­образовано в "ActiveSheet". Такая возможность обеспечивает дополнительный контроль правильности написания служебных слов.

Назначение большинства кнопок на панели управления и пунк­тов меню среды разработки очевидно и не требует дополнительных пояснений. Если вопросы все-таки возникают, можно воспользоваться обширной и полной системой помощи, которая доступна по команде "?/Содержание и предметный указатель". Для доступа к справке по раз­делу собственно программирования в Excel (команды VBA, объекты, функции и т.п.) в системе помощи выберите пункт "Справочник по Microsoft Excel Visual Basic". Кроме этого, при изучении рекомендуется использовать литературу, приведенную в данном руководстве.

Лабораторная работа №1 знакомство со средой программирования excel vba

Цель: Получить первоначальные навыки работы в среде программиро­вания Excel VBA. Научиться обращаться к значениям ячеек и состав­лять простейшие макросы для обработки ячеек.

Указания по выполнению

  1. Перейдите в среду программирования VBA (команда "Сер­вис/Макрос/Редактор Visual Basic", либо нажать клавиши <Alt>+<Fl 1>).

  2. Вид среды программирования VBA приведен на рис. 1.1. Изучите меню команд и панель управления. Для получения описания команд меню и кнопок панели управления воспользуйтесь командой "?/Содержание и предметный указатель".

  3. Добавьте в рабочую книгу новый модуль ("Вставка/Модуль").

  4. Создайте макрос, который меняет местами содержимое ячеек А1 и В1. Для этого в окне редактирования модуля наберите следующие команды:

Public Sub Обмен_А1_В1()

Dim A

А = ActiveSheet.Range("Al")

ActiveSheet.Range("Al") = ActiveSheet.Range("Bl") ActiveSheet.Range("Bl") = A

End Sub

  1. Вернитесь обратно в Excel, используя Панель Задач Windows.

  2. Введите разные значения в ячейки А1 и В1 текущей рабочей таблицы (например, поместите в А1 число 100, а в В1 - любой текст).

  3. Выполните макрос Обмен_А1_В1 по команде "Сервис/Макрос/ Макросы/Обмен_А1_В1/Выполнить". Проследите, как изменились значения ячеек А1 и В1.

  4. Назначьте клавиши <Ctrl>+<Shift>+<M> для выполнения макроса (команда "Сервис/Макрос/Макросы/Параметры/Сочетание клавиш"). Выполните макрос, нажав эти клавиши. Что при этом происходит?

  5. Снова перейдите в среду программирования VBA. Исправьте текст макроса, чтобы он выглядел следующим образом:

Public Sub Обмен_А1_В1()

Dim A

A = Range("Al")

Range("Al") = Range("Bl") Range("Bl") = A

End Sub

Р ис. 1.1. Вид среды программированияVBA

  1. Вернитесь в Excel и выполните макрос по сочетанию клавиш <Ctrl>+<Shift>+<M>. Объясните, в чем отличие нового макроса и каким образом он работает.

  2. Замените объекты Range в тексте макроса на объекты Cells. Для это­го вместо Range("Al") запишите Cells(l, 1), а вместо Range("Bl") - Cells(l,2).

  3. Проверьте правильность замены объектов путем запуска нового макроса.

  4. Назовите макрос по-другому: в команде "Public Sub" замените "Об- мен_А1_В1" на "Новый_макрос".

  5. Просмотрите список макросов ("Сервис/Макрос/Макросы"). Выпол­ните макрос, нажав кнопку "Выполнить".

Контрольные вопросы:

  1. Какие окна имеются в среде программирования VBA? Для чего предназначено каждое окно?

  2. Каково назначение пунктов меню "Правка", "Вид", "Вставка" и "За­пуск"?

  1. Что такое макрос? Каким путем можно выполнить готовый макрос в Excel?

  2. Какие объекты Excel использовались в данной лабораторной работе? Что означает каждый объект?

  3. Какие команды обозначают начало макроса и его окончание?

  4. Как изменить название макроса?

  5. Для чего в макросе была использована переменная А?

  6. Что означает команда Range("Al") = Range("BI")?

  7. Какому объекту Range (Range("Al") или Range("Bl")) соответствует объект Cells( 1,2)?

studfiles.net

Функция Command | Microsoft Docs

  • 06/08/2017
  • Время чтения: 2 мин

В этой статье

Возвращает аргумент командной строки , используемой для запуска исполняемую программу, разработанных с помощью Visual Basic или Microsoft Visual Basic.Returns the argument portion of the command line used to launch Microsoft Visual Basic or an executable program developed with Visual Basic. Функция Visual Basic команду недоступен в приложениях Microsoft Office.The Visual Basic Command function is not available in Microsoft Office applications.

СинтаксисSyntax

CommandCommand

ПримечанияRemarks

При запуске Visual Basic из командной строки на любой части командной строки, который соответствует /cmd передается в программу в качестве аргумента командной строки.When Visual Basic is launched from the command line, any portion of the command line that follows /cmd is passed to the program as the command-line argument. В следующем примере передается в программу в качестве аргумента командной строки.In the following example, is passed to the program as the command-line argument. В следующем примере командной строки cmdlineargs представляет собой аргумент возвращаемое функцией команды .In the following command line example, cmdlineargs represents the argument information returned by the Command function.

VB /cmd cmdlineargs

Для приложений, разработанных с помощью Visual Basic и скомпилированный файл .exe команда возвращает все аргументы, имя приложения, в командной строке.For applications developed with Visual Basic and compiled to an .exe file, Command returns any arguments that appear after the name of the application on the command line. Пример:For example:

MyApp cmdlineargs

Чтобы узнать, как аргументы командной строки может быть изменен в пользовательском интерфейсе приложения, которую вы используете, поиск справки «аргументы командной строки».To find how command line arguments can be changed in the user interface of the application you are using, search Help for "command line arguments."

ПримерExample

В этом примере используется функция команду для получения аргументы командной строки в функции, которая возвращает их в Variant , содержащее массив.This example uses the Command function to get the command line arguments in a function that returns them in a Variant containing an array. Недоступно в Microsoft Office.Not available in Microsoft Office.

Function GetCommandLine(Optional MaxArgs) 'Declare variables. Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs 'See if MaxArgs was provided. If IsMissing(MaxArgs) Then MaxArgs = 10 'Make array of the correct size. ReDim ArgArray(MaxArgs) NumArgs = 0: InArg = False 'Get command line arguments. CmdLine = Command() CmdLnLen = Len(CmdLine) 'Go thru command line one character 'at a time. For I = 1 To CmdLnLen C = Mid(CmdLine, I, 1) 'Test for space or tab. If (C <> " " And C <> vbTab) Then 'Neither space nor tab. 'Test if already in argument. If Not InArg Then 'New argument begins. 'Test for too many arguments. If NumArgs = MaxArgs Then Exit For NumArgs = NumArgs + 1 InArg = True End If 'Concatenate character to current argument. ArgArray(NumArgs) = ArgArray(NumArgs) & C Else 'Found a space or tab. 'Set InArg flag to False. InArg = False End If Next I 'Resize array just enough to hold arguments. ReDim Preserve ArgArray(NumArgs) 'Return Array in Function name. GetCommandLine = ArgArray() End Function

msdn.microsoft.com

Создание меню visual basic

Сразу скажу, что у меня не было цели, рассказать обо всех функциях WinAPI для работы с меню.Зачем мучаться с ними, если проще всё сделать в VB. Вот то, что для VB недоступно, - это мыи рассмотрим.Visual Basic даёт программисту простой и удобный инструмент для создания меню. Но этот инструмент уступает по возможностям, прямой работе с меню через WinAPI.VB удобен и прост в использовании из-за того, что программисту не нужно заботиться о взаимодействии приложения с Windows. Это одновременно и его недостаток, т.к. программисту очень тяжело работать с системой напрямую, игнорируя VB.Всё выше сказанное напрямую связано с работой с меню через WinAPI. Дело в том, что меню в Visual Basic - специальный объект, не являющийся по сути настоящим меню Windows, хотя он и формирует меню в процессе исполнения.В VB меню задаётся набором пунктов, различающихся именем(или индексом) и степенью вложенности. В Windows меню - это объект, содержащий набор команд с определёнными идентификаторами. Если VB на выбор пункта меню отзывается событием типа Menu_CLick, то Windows отправляет окну - хозяину меню сообщение WM_COMMAND с соответствующими параметрами. VB не может правильно обработать сообщение от пункта меню созднного через API, так как "не понимает" его. Чтобы перехватывать такие сообщения требуется субклассирование. В Windows существует два типа меню: меню окна, и всплывающее меню.(В VB, меню окна составляют не вложенные пункты, а всплывающее меню формируется из вложенных). Подменю в Windows - это отдельные меню, связанные с вызывающим пунктом меню.Все функции предназначенные для работы с меню, находятся в модуле user32 и возвращают Long.Все параметры передаются ByVal.Работать с меню можно только через его манипулятор, поэтому рассмотрим функции предназначенные для получения этого манипулятора.

GetMenu(hWnd As Long)Эта функция получает манипулятор меню окна, заданного hWnd

GetSubMenu( hMenu As Long,nPos As Long)Эта функция получает манипулятор всплывающего меню, с которым ассоциирован пункт меню hMenu, под номером nPos, нумерация начинается с нуля.

GetSystemMenu(hWnd As Long, bRevert As Long)Получает манипулятор системного меню окна, заданного hWnd.Если bRevert присвоить ненулевое значение, системное меню будет восстановлено.При ошибке или восстановлении меню, функция возвращает 0.

IsMenu(hMenu As Long) - проверяет действителен ли манипулятор меню hMenu. Если да, возвращает ненулевое значение, иначе ноль.

GetMenuDefaultItem(hMenu As Long, fByPos As Long, gmdiFlags As Long) - функция определяет команду меню по умолчанию. hMenu-манипулятор проверяемого меню.fByPos - Флаг, если неравен нулю, возвращает позицию, иначе идентификатор.gmdiFlags - GMDI_GOINGTOPOPUPS, для поиска внутри связанных всплывающих меню. GMDI_USEDISABLED, для запрета пропуска заблокированных меню.Если функция не находит команды возвращает -1, иначе идентификатор или позицию команды.

GetMenuItemID(hMenu As Long, nPos As Long)-функция получает идентификатор команды меню. hMenu-манипулятор меню.nPos-позиция команды меню. Отсчёт начинается с нуля.Функция возвращает идентификатор, 0 если разделитель, -1 если с пунктом ассоциировано подменю.

GetMenuCheckMarkDimensions()-возвращает необходимые размеры маркера, для пометки команды меню.Возвращает Long-старшее слово которого(16 бит) содержит высоту, а младшее - ширину в пикселах.В отличие от всех остальных, прведённых здесь не поддерживается в Win16.Через эту функцию, я определил, что размеры маркера 13x13.

SetMenuDefaultItem(hMenu As Long, uItem As Long, fByPos As Long)-устанавливает команду меню по умолчанию.hMenu-манипулятор меню.uItem-команда для установки, -1 для сброса текущей команды по умолчанию.fByPos-ненулевое значение обозначает, что в uItem передана позиция, 0 - идентификатор.Функция возвращает ноль, в случае ошибки.

Теперь рассмотрим три функции, ради которых собственно и стоит использовать WinAPI.

ModifyMenu Alias "ModifyMenuA"(hMenu As Long, nPosition As Long, wFlags As Long, wIDNewItem As Long, lpNewItem As Any)-Мощная функция для изменения команды меню. Позволяет задавать растры для команд меню.ModifyMenu предпочтительнее AppendMenu, и InsertMenu, так, как не меняет расположение команд. hMenu-манипулятор меню.nPosition-изменяемая кманда меню.wIDNewItem-новый идентификтор команды. Вы должны передать идентификатор полученный GetMenuItemID для этой команды меню, иначе VB не узнает её.lpNewItem-новое значение для команды меню.wFlags-флаги управляющие изменением меню.MF_BITMAP-для замены текста команды растром. В lpNewItem нужно передать манипулятор растра.Его можно получить через свойство Handle объекта Picture. Пример: imgPicture.Picture.Handle. В этом случае Вы должны следить, чтобы содержимое контейнера PictureBox илм Image не менялось.MF_STRING-в lpNewItem задаётся текстовая команда.MF_SEPARATOR-команда превращается в разделитель.MF_BYCOMMAND-в nPosition передаётся идентификатор.MF_BYPOSITION-в nPosition передаётся номер команды, наxиная с нуля.Функция возвращает нулевое значение, в случае ошибки. иначе ненулевое. Устанавливает информациюGetLastError.

SetMenuItemBitmaps(hMenu As Long, nPosition As Long, hBitmapUnchecked As Long, hBitmapChecked As Long)-функция устанавливает маркеры для помеченного и непомеченного состояния.hMenu-манипулятор менюnPosition,wFlags - смотри ModifyMenuhBitmapUnChecked, hBitmapChecked-манипуляторы соответствующих растров. Если один из параметров,установлен в ноль, соответствующий маркер не используется. Если оба равны нулю, используются маркеры по умолчанию.На изображения используемые в качестве маркеров накладываются те-же ограничения, что и на растры, дляModifyMenu.Функция возвращает 0 при ошибке. Остальные значения свидетельствуют, об удаче.

TrackPopupMenu(hMenu As Long, wFlags As Long, x As Long, y as Long,nReserved As Long, lpRc As Rect)-Функция выводит всплывающее меню, в любой точке экрана.hMenu-маниулятор меню.x, y-координаты "всплывания".nReserved-должен быть равен нулю.lpRc-прямоугольник, щелчок внутри которого. не закрывает меню. Рекомендую объявить его ByVal lpRc As Long, и передавать ноль.wFlags-флаги управляющие "всплыванием".TPM_CENTERALIGN-x, y задают координаты центра меню.TPM_LEFTALIGN-по x выровнен левый край.TPM_RIGHTALIGN-по x выровнен правый край.TPM_LEFTBUTTON- меню вызывается левой кнопкой.TPM_RIGHTBUTTON- меню вызывается правой кнопкой.Возвращает 0 в случае ошибки, остльные значения обозначают успех. Устанавливает информацию GetLastError.

В завершении, я приведу код двух функций, для получения манипулятора меню заданного названием(caption) пункта, ипозиции этого пункта в этом меню.

Как всегда весь код был скопирован прямо из VB-редактора.

vb.narod.ru

Полезные команды VBA

Function Translit(Txt As String) As String

Txt = Txt

Rus = Array("ий", "ый", "ъе", "ъя", "ъю", _

"ъё", "ье", "ья", "ью", "ьё", "а", "б", "в", "г", _

"д", "е", "ё", "ж", "з", "и", "й", "к", "л", _

"м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", _

"ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", _

"ИЙ", "ЫЙ", "ЪЕ", "ЪЯ", "ЪЮ", _

"ЪЁ", "ЬЕ", "ЬЯ", "ЬЮ", "ЬЁ", "А", "Б", "В", "Г", _

"Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", _

"М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", _

"Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", _

" ", "_", "?", _

"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", _

"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "«", "»")

 

Eng = Array("y", "y", "ye", "ya", "yu", _

"yo", "ye", "ya", "yu", "yo", "a", "b", "v", "g", _

"d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", _

"n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", _

"ch", "sh", "sch", "", "y", "", "eh", "u", "ya", _

"Y", "Y", "Ye", "Ya", "Yu", _

"Yo", "Ye", "Ya", "Yu", "Yo", "A", "B", "V", "G", _

"D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "L", "M", _

"N", "O", "P", "R", "S", "T", "U", "F", "H", "Ts", _

"Ch", "Sh", "Sch", "", "Y", "", "Eh", "U", "Ya", _

" ", "_", "?", _

"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", _

"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "", "")

 

For i = 1 To Len(Txt)

с = Mid(Txt, i, 1)

flag = 0

For J = 0 To 116

If Rus(J) = с Then

outchr = Eng(J)

flag = 1

Exit For

End If

Next J

If flag Then outstr = outstr & outchr Else outstr = outstr & с

Next i

 

Translit = outstr

End Function

webhamster.ru

Знакомство со встроенными командами. VBA для чайников

Знакомство со встроенными командами

Похоже, VBA немного не соответствует тому имиджу, который он себе создает. Ох, как отчаянно VBA хочет выглядеть истинным объектно-ориентированным языком программирования (об объектно-ориентированном программировании мы поговорим в главе 12). С другой стороны, следует признать, что есть кое-что, что вы хотели бы иметь в программе, но нельзя сказать, что это естественным образом умещается в матрицу объектно-ориентированного подхода.

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

В общем, учитывая, что некоторые действия могут оказаться в нелогичных для них категориях, вы получаете три типа встроенных VBA-команд, способных выполнять полезную работу.

* Операторы. Хотя термин оператор уже используется для обозначения целой программной директивы (см. главу 7), VBA называет операторами и отдельные ключевые слова, выполняющие специальные задачи. Некоторые из таких ключевых слов функционируют сами по себе как целые операторы. Например, оператор Веер заставляет динамик компьютера издавать звук. Другие же должны использоваться как составные части законченных операторов. Например, оператор ChDi r (перейти в каталог) бесполезен без аргумента, задающего каталог или папку, куда нужно перейти:

ChDir("Отчеты о мечтаниях ")

* Функции. Встроенные функции работают точно так же, как и процедуры типа Function, обсуждавшиеся в главе 7,- в том смысле, что они возвращают значение. Использование функции часто заключается в присваивании ее значения переменной, как в следующем примере с функцией Tan (тангенс):

dblТангенс = Tan (dblЛюбойУгол)

Функции могут также обеспечивать значения для более сложных выражений или условных операторов, например:

If Tan (dblОстрыйУгол) < 45 Then

* Методы встроенных объектов. В этой группе курьезно выглядит метод Print, единственный для объекта Debug и предназначенный для направления вывода в окно немедленного выполнения команд (окно Immediate) в редакторе Visual Basic. Для этого используются операторы типа

Debug.Print (strПосланиеМарсианина)

* Лично я не вижу никаких преимуществ в связывании команды Print с объектом, но сам по себе метод Print оказывается очень полезным. Подробно он обсуждается в главе 14. Здесь же замечу, что, хотя VBA и не инкапсулирует файлы, как объекты, можно дополнительно установить программную надстройку, которая позволит управлять файлами и работать с их содержимым на основе объектно-ориентированного подхода (подробности - в главе 12).

В табл. 11.1 приводятся некоторые из встроенных VBA-команд, взятые для примера и относящиеся к различным категориям (операторы, функции, методы). Дальше в главе будут рассматриваться чаще всего используемые встроенные команды.

Таблица 11.1. Примеры встроенных функций, операторов и методов

Команда

Тип

Выполняемые действия

Randomize

Оператор

Инициализирует генератор случайных чисел

Sqr ( число)

Функция

Возвращает значение квадратного корня числа

Format ( строка )

Функция

Форматирует строку в соответствии с заданным описанием

Date

Оператор

Устанавливает системную дату

Date

Функция

Возвращает текущую системную дату

Err . Raise

Метод объекта Err

Генерирует ошибку выполнения с заданным кодом данных

Поделитесь на страничке

Следующая глава >

it.wikireading.ru

Иллюстрированный самоучитель по Visual Basic .NET › Выражения, операторы и передача управления › Консольные приложения [страница - 35] | Самоучители по программированию

Консольные приложения

В этой главе представлен базовый "арсенал" VB.NET. Большая часть материала сводится к краткому обзору концепций, присущих всем языкам программирования (например, переменных и команд цикла), и описанию базовых типов данных, в основном различных чисел и строк. Читатели, хорошо знакомые с VB6, могут бегло пролистать эту главу.

Лишь в нескольких примерах этой главы встречается реальный код, который может использоваться в серьезных программах VB.NET. Дело в том, что ни одна серьезная программа VB.NET не обходится без объектов, построенных по шаблонам, называемых классами, а эта тема будет рассматриваться в главе 4. Мы начнем с базовых конструкций языка, потому что в противном случае нам пришлось бы ограничиться примитивными классами, не обладающими никакой практической ценностью. В этой главе не рассматриваются классы, определяемые пользователем, и продемонстрированы лишь простейшие примеры использования встроенных классов .NET Framework, обладающих исключительно широкими возможностями.

Что же из этого следует? Как ни странно – то, что написанные в этой главе программы весьма близки по стилю к традиционному программированию ранней эпохи BASIC и даже предшествовавшей ей эпохи Fortran и COBOL (если не считать некоторых странных, но необходимых синтаксических конструкций). В частности, в отличие от программ из дальнейших глав, у них всегда есть четко определенные начало и конец, и управление передается от начала к концу (хотя управление может передаваться специальными командами).

Как говорилось во введении, мы постараемся приводить программы, написанные в нормальном стиле .NET, по возможности избегая искусственной совместимости с VB6.

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

Точкой входа консольного приложения является процедура Sub Main модуля (аналог процедуры Sub Main в VB6). Если выбрать в диалоговом окне New Project значок консольного приложения (Console Application), VB.NET автоматически генерирует "скелет" приложения с точкой входа – процедурой Sub Main:

Module Module1 Sub Main() End Sub End Module

В отличие от VB6, в первой строке задается имя модуля (команда выделена жирным шрифтом). В данном примере используется имя Modul el, принятое по умолчанию. По правилам имя модуля должно совпадать с именем файла. Допустим, вы изменили имя модуля в первой строке: Module Test1. При попытке запустить консольное приложения выводится сообщение об ошибке:

Startup code 'Sub Main' was specified in 'Test.Modulel'. but 'Test.Modulel' was not found

Переименование модуля после его создания выполняется следующим образом:

  1. Измените имя модуля в окне программы.
  2. Измените имя файла модуля в окне решения.
  3. Щелкните правой кнопкой мыши в строке ConsoleApplication окна решения и выберите в контекстном меню команду Properties.
  4. Убедитесь в том, что в списке Startup object появившегося диалогового окна (рис. 3.1) выбрано имя модуля.

По аналогии с VB6 программа VB.NET (решение) может состоять из нескольких модулей, но наличие процедуры Sub Main допускается только в одном модуле. Приложение завершается по достижении команды End Sub процедуры Sub Main. Например, легендарная программа "Hello world" выглядит следующим образом:

Module Modul el Sub Main() Console.WriteLine("Hello world") End Sub End Module

Если запустить эту программу в IDE, на экране очень быстро мелькнет (и тут же исчезнет) окно DOS со словами "Hello world". Окно закрывается по завершении обработки команды End Sub.

samoychiteli.ru