Vba логическое или. Операторы и встроенные функции VBA. Некорректный перенос Корректный перенос

Наименование параметра Значение
Тема статьи: Операторы VBA
Рубрика (тематическая категория) Программирование

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

В языке VBA можно выделить следующие группы операторов:

1. декларативные операторы, предназначенные для описания объектов, с которыми работает программа (типов переменных, констант и массивов и др.),

2. операторы-комментарии,

3. операторы присваивания и изменения значений объектов,

4. операторы, управляющие ходом вычислений (условный, циклический, перехода).

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

Оператор комментария

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

Любая строка текста программы может заканчиваться комментарием. Комментарий в VBA начинается апострофом (") и включает любой текст, расположенный правее в строке.

К примеру,

Weight= weight+z "Увеличение весаvalue=weight*price "Новая стоимость

Оператор присваивания

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

Управляющие операторы

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

Условный оператор If Then Else End If

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

Операторы VBA - понятие и виды. Классификация и особенности категории "Операторы VBA" 2017, 2018.

  • - Операторы жизни и сохранения Количества

    Эта категория Диала в ТРИЗ представлена как «принцип № 34, отброса и регенерации частей: а) Выполнившая свое назначение или ставшая ненужной часть объекта должна быть отброшена (растворена, испарена и т. д.) или видоизменена непосредственно в ходе работы. б)... .


  • - Элементы языка VBA

    Рис. 12.1 Расположенные объекты на форме 6. Активизируя на форме отдельно каждый объект, устанавливаем его свойство с помощью окна свойств (Properties рис. 12.2). Таким образом, интерфейс создан (рис. 12.3). Рис. 12.3. Интерфейс проекта (с... .


  • - Условные операторы

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


  • - Составные операторы условия

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


  • - Основы VBA

    Visual Basic For Application (VBA) – это сочетание одного из самых простых языков программирования и всех вычислительных возможностей табличного процессора Excel. С помощью VBA можно легко и быстро создавать разнообразные приложения, даже не являясь специалистом в области...

  • Краткие теоретические сведения

    1. Синтаксис и семантика языка программирования VBA

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

    Основные синтаксические принципы этого языка следующие:

    • VBA нечувствителен к регистру;
    • чтобы закомментировать код до конца строки, используется одинарная кавычка (") или команда REM;
    • символьные значения должны заключаться в двойные кавычки (");
    • максимальная длина любого имени в VBA (переменные, константы, процедуры) - 255 символов;
    • начало нового оператора - перевод на новую строку (точка с запятой, как в C, Java, JavaScript, для этого не используется);
    • ограничений на максимальную длину строки нет (хотя в редакторе в строке помещается только 308 символов). Несколько операторов в одной строке разделяются двоеточиями:
      MsgBox "Проверка 1" : MsgBox "Проверка 2"
    • для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела и знака подчеркивания после него:
      MsgBox "Сообщение пользователю" _
      & vUserName

    Семантика языка - это смысловое значение слов. В программировании - начальное смысловое значение операторов, основных конструкций языка и т. п.

    Оператор - это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

    Арифметических операторов в VBA всего 7.

    Четыре стандартных: сложение (+), вычитание (−), умножение (*), деление (/), и еще три:

    • возведение в степень (^). Например, 2^3 = 8;
    • целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 5\2 = 2;
    • деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

    Оператор присваивания в VBA - это знак равенства. Можно записывать так:

    Let nVar = 10
    а можно еще проще:
    nVar = 10

    Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает "присвоить переменной nVar значение 10", а если строка выглядит так: If (nVar = 10) , то это значит "если значение переменной nVar равно 10".

    Операторов сравнения в VBA всего 8:

    • равенство (=). Например, If (nVar = 10);
    • больше, чем (>) и меньше, чем (10);
    • больше или равно (>=) и меньше или равно (= 10);
    • не равно (). Например, If (nVar10);
    • сравнение объектов (Is). Определяет, ссылаются объектные переменные на один и тот же объект или на разные. Например, If (obj1 is obj2);
    • подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

    Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).

    Очень часто при проверке нескольких условий используются логические операторы :

    • And - логическое И. Должны быть истинными оба условия;
    • Or - логическое ИЛИ. Должно быть истинным хотя бы одно из условий;
    • Not - логическое отрицание. Возвращает True, если условие ложно;
    • Xor - логическое исключение. В выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе - False;
    • Eqv - эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение;
    • Imp - импликация, E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе - True.

    Помнить нужно про And, Or, Not , остальные логические операторы используются редко.

    Переменные - это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе - вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы "предъявляете номерок" и получаете их.

    Каждая переменная имеет имя. Обращение к переменной происходит по имени. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции, процедуры и т. п.):

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

    При создании программ VBA рекомендуется определиться с правилами, по которым будут присваиваться имена объектам - соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):

    • имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной:
      str (или s) - String, символьное значение;
      fn (или f) - функция;
      sub - процедура;
      c (или все буквы имени заглавные) - константа (контейнер для хранения данных, которые, в отличие от переменных, не изменяются в ходе выполнения VBA-программы);
      b - Boolean, логическое значение (True или False);
      d - дата;
      obj (или o) - ссылка на объект;
      n - числовое значение;
    • имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:
      MsgBox objMyDocument.Name
      Sub CheckDateSub()

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

    2. Основные типы данных VBA

    В VBA предусмотрены следующие типы данных:

    • числовые:
      Byte - целое число от 0 до 255, для хранения нужен 1 байт памяти ;
      Integer - целое число от −32 768 до 32 767, 2 байта ;
      Long - большое целое число от −2 147 483 648 до 2 147 483 647, 4 байта ;
      Currency (денежный) - большое десятичное число с 19 позициями, включая 4 позиции после запятой
      (от –922337203685477,5808 до 922337203685477,5807), 4 байта ,
      используется для хранения чисел, когда точность крайне важна, что бывает при вычислениях с денежными единицами;
      Decimal - еще большее десятичное число с 29 позициями (после запятой можно использовать от 0 до 28 позиций), 8 байт ;
      Single и Double - значения с плавающей запятой (4 и 8 байт )
      (от -3.402823·10 38 до -1.401298·10 -45 для отрицательных значений и
      от 1.401298·10 -45 до 3.402823·10 38 для положительных значений для Single, и
      от -1.79769313486232·10 308 до -4.94065645841247·10 -324 для отрицательных значений и
      от 4.94065645841247·10 -324 до 1.79769313486232·10 308 для положительных значений для Double);
    • строковые (String переменной длины (примерно до 2 млрд символов) и фиксированной длины (примерно до 65 400 символов));
    • дата и время (Date - от 01.01.100 до 31.12.9999), 8 байт ;
    • логический (Boolean - может хранить только значения True и False), 2 байта ;
    • объектный (Object - хранит ссылку на любой объект в памяти);
    • Variant - специальный тип данных, который может хранить любые типы данных, 16 байт +1
    Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA). Над различными типами данных допустимы различные операции. В VBA имеются три основных типа операций:
    • математические, выполняются над числами, их результатом являются числа;
    • операции отношения, могут применяться не только к числам, их результатом является значения логического типа;
    • логические, используются в логических выражениях и их результатом являются логические значения.

    3. Приоритеты операций

    Приоритет Операция
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Вызов функции и скобки
    ^
    - (смена знака)
    *, /
    \
    Mod
    +, –
    >, <, >=, <=, <>, =
    Not
    And
    Or
    Xor

    4. Математические функции

    Функция Возвращаемое значение
    Abs (<число>) Модуль (абсолютная величина) числа
    Atn (<число>) Арктангенс
    Cos (<число>) Косинус
    Exp (<число>) Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень
    Log(<число>) Натуральный логарифм
    Rnd (<число>) Случайное число из интервала [, Заголовок]

    Аргументы:

    Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из нескольких текстовых строк, объединенных знаком & . Использование в этом аргументе Chr(13) приводит к переходу на новую строку при выводе информации.

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

    Заголовок - задает заголовок окна.

    Функция MsgBox возвращает значение типа Integer, указывающее, какая кнопка была нажата в диалоговом окне.

    Таблица 3.1. Допустимые значения переменной кнопки

    Отображение

    Аргумент

    Кнопка ОК

    Кнопки ОК и Отмена

    Кнопки Да и Нет

    Кнопки Да, Нет и Отмена

    Кнопки Прекратить, Повторить и Игнорировать

    VbAbortRetryIgnore

    Кнопки Повторить и Отмена.

    Информационный знак

    Знак вопроса

    Знак восклицания

    Например . Вывести сообщение о текущей дате.

    MsgBox "Сегодня на календаре" & Date , "Внимание"

    В результате будет выведено следующее окно (рис.3.1).

    После щелчка по кнопке ОК окно сообщения закроется, и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом MsgBox.

    3.3.2. Функция InputBox

    Функция InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:

    Имя_Переменной = InputBox(Сообщение[, Заголовок ] )

    Аргументы:

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

    Заголовок - задает заголовок окна.

    Например , Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 10.

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

    N = InputBox("Введите N", "Ввод исходных данных",10)

    В результате будет выведено следующее окно для ввода значения переменной N (рис.3.2).

    Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 10 и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом InputBox .

    Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.

    3 .4. Условный оператор IF

    Для реализации разветвляющегося вычислительного процесса в VBA используется оператор If…Then…Else, который представляет собой простейшую форму проверки условий. Он имеет следующий синтаксис:

    If УСЛОВИЕ Then ОПЕРАТОР_1 E lse ОПЕРАТОР_2

    ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2 . При этом оператор If…Then…Else записывается в одну строку.

    УСЛОВИЕ - это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.

    Таблица 3 .2. Логические отношения

    Операция

    Название

    Выражение

    Результат

    True, если А равно В

    True, если А не равно В

    True, если А,больше В

    True, если А меньше В

    Больше или равно

    True, если А больше или равно В

    Меньше или равно

    True, если А меньше или равно В

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

    Таблица 3 .3. Логические операции

    Название

    Выражение

    Результат

    Логическое
    отрицание

    Логическое И

    Логическое ИЛИ

    В условном операторе допустимо использование блока операторов вместо любого из операторов. В этом случае условный оператор имеет вид:

    If УСЛОВИЕ Then

    БЛОК_ОПЕРАТОРОВ_1

    БЛОК_ОПЕРАТОРОВ_2

    End I f

    В условном операторе может проверяться несколько условий. В этом случае условный оператор имеет вид:

    If УСЛОВИЕ_1 Then

    БЛОК_ОПЕРАТОРОВ_1

    ElseIf УСЛОВИЕ_2 Then

    БЛОК_ОПЕРАТОРОВ_2

    Else

    End If

    Пример 1 . Написать часть программы для алгоритма на рис. 3.3.

    Пример 2. Написать часть программы для алгоритма на рис. 3.4.

    3.5. Оператор выбора Select Case

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

    Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ

    Case ЗНАЧЕНИЯ_1

    ОПЕРАТОРЫ_1

    Case ЗНАЧЕНИЯ _ 2

    ОПЕРАТОРЫ _ 2

    . . .

    Case ЗНАЧЕНИЯ_N

    ОПЕРАТОРЫ _N

    [ Case Else

    ИНАЧЕ _ ОПЕРАТОРЫ]

    End Select

    ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

    Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ .

    Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ . Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ОПЕРАТОРЫ_I End Select . Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select

    Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.

    3.6. Операторы цикла

    Для реализации циклического вычислительного процесса, т. е. многократного выполнения одного или нескольких операторов, служит оператор цикла For…Next , который имеет следующий синтаксис:

    For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Т o КОН_ЗНАЧЕНИЕ Step ШАГ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Next СЧЕТЧИК

    Цикл For…Next перебирает значения переменной СЧЕТЧИК , которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*

    Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next .

    For Each Элемент In Группа

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Next Элемент

    В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:

    циклы с предусловием - Do While Loop ,

    Do Until Loop ;

    циклы с постусловием - Do Loop While ,

    Do Loop Until .

    Ниже приведен синтаксис этих операторов цикла:

    " Цикл с предусловием Do While Loop

    Do While УСЛОВИЕ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    " Цикл с предусловием Do Until Loop

    Do Until УСЛОВИЕ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    " Цикл с постусловием Do Loop While

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Loop While УСЛОВИЕ

    " Цикл с постусловием Do Loop Until

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Loop Until УСЛОВИЕ

    Оператор Do W hile…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор



    Другие новости

    Инструкции (или операторы) языка – это программные единицы, выполняющие какие-то действия или описывающие данные.

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

    О ператор присвоения

    Оператор присвоения используется для присвоения нового значения переменной в ходе выполнения программы. Знак присвоения «=».

    Например , оператор:

    x = Sqr(5 + Tan(1.8) ^ 2)

    присваивает переменной х значение выражения . В результате вычисления выражения, записанного в правой части, получим вещественное число. Но значение, которое будет присвоено переменной х, зависит от того, как был описан тип этой переменной. Так, если переменная х имеет тип Single, ей будет присвоен результат 4,834464 , если Double, то 4,83446368725481, а если Integer, то 5.

    Тип данных переменной х должен быть совместим с типом данных этого выражения. Кроме неявного преобразования из одного типа в другой при присвоении, в языке Visual Basic предусмотрена возможность преобразования типов с помощью функций. Например, функция CDbl преобразует данные к типу Double, CInt – к типу Integer, Clng – к типу Long, CSng – к типу Single, CStr – к типу String и т. д.

    Функции CInt и Clng выполняют округление результата. При этом если дробная часть числа равна 0,5, округление производится до ближайшего четного числа.

    Оператор присвоения позволяет не только присвоить значение переменной, но и задать значения свойств объектов VBA. Например, оператор

    Rows("1:1").Font. Bold = True

    делает полужирным шрифт в первой строке рабочего листа.

    ПЕРЕНОС СТРОКИ

    Комбинация <Пробел> + <Знак подчеркивания> в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить что:

    § Нельзя разбивать переносом строковые константы

    § Допустимо не более семи продолжений одной и той же строки

    § Сама строка не может содержать более 1024 символов

    Пример.

    Некорректный перенос Корректный перенос

    Строка = "Visual Basic for _ Строка = "Visual Basic" _

    Applications" & "for Applications "

    КОММЕНТАРИИ

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

    Условный оператор

    Условный оператор выполняет определенные инструкции (операторы) в зависимости от значения выражения условия. Блок-схема проверки условия имеет вид:

    Рис. 1. Ветвление может быть неполным (такую структуру называют еще обход).

    Рис. 2. Условный оператор имеет две формы синтаксиса: строчную и блочную.

    Строчная форма

    If условие Then [операторы­_если_истина ]

    Алгоритм, представленный на рис. 1, в строчной форме будет записан в виде

    If условие Then операторы­_если_истина Else операторы­_если_ложь

    Рисунку 2 соответствует запись

    If условие Then операторы­_если_истина

    Рисунку 3 соответствует запись

    If условие Then Else операторы­_если_ложь

    Блочная форма

    If условие-1 Then

    [операторы­_если условие–1_истина ]

    [операторы­_если_ все_условия_ложь ]]

    Условия, перечисленные в частях If и ElseIf, представляют собой выражения отношения или логические выражения. При выполнении одного из условий выполняются инструкции, следующие за соответствующим ему ключевым словом Then, а остальные инструкции игнорируются (т. е. дальнейшие проверки не выполняются и управление передается оператору, следующему за End If). Если ни одно из логических условий не равно истине, то выполняются операторы­_если_ все_предыдущие_условия_ложь , либо, если эта часть опущена, управление передается строке программы, следующей после условного оператора.

    Блочная форма оператора If более предпочтительна, если:

    При выполнении или невыполнении условия выполняется несколько операторов (строчную форму в этом случае тоже можно использовать, но строка будет слишком длинной, а программа – менее понятной);

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

    Пример

    Фирма предоставляет скидки оптовым покупателям.

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

    Для вычисления стоимости заказа используем функцию:

    Public Function Стоимость_заказа(Количество As Long) As Double

    If Количество <= 999 Then

    Стоимость_заказа = Количество * 5

    ElseIf Количество <= 1999 Then

    Стоимость_заказа = Количество * 4.8

    Стоимость_заказа = Количество * 4.75

    В данном случае можно было использовать и строчную форму оператора IF:

    Public Function Стоимость_заказа1(Количество As Long) As Double

    If Количество <= 999 Then Стоимость_заказа1 = Количество * 5

    If Количество >= 1000 And Количество <= 1999 Then Стоимость_­ заказа1 = Количество * 4.8

    If Количество >= 2000 Then Стоимость_заказа1 = Количество * 4.75

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

    Однако можно привести примеры, когда при выполнении (или невыполнении) одного из условий другие проверять просто нельзя.

    Например , некоторые операторы должны выполняться при совместном выполнении условий: http://po-teme.com.ua/images/adIIIin/image014_e652e49476c6f0eb9cf40b68cc090828.gif" alt="" width="56" height="27 src=">. Если для проверки использовать оператор

    If x>0 and y

    то при отрицательном значении х возникнет ошибка при вызове функции sqr (под корнем отрицательное число).

    Этой ошибки можно избежать, если использовать конструкцию

    If x > 0 Then If y < Sqr(x) Then

    В последней форме записи если есть ключевое слово Else, то оно относится к последнему оператору If.

    Оператор выбора

    Select Case выражение

    [инструкции_ else ]]

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

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

    – значения;

    – диапазона значений в виде начальное_значение To конечное_значение ;

    – выражения сравнения в виде Is оператор_сравнения значение ;

    – списка любых из перечисленных видов выражений (разделитель – запятая).

    В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции блока Case Else.

    Например, если условием является оценка выше тройки, то это условие можно записать: Case 4, 5 или Case Is >3 или Case Is >= 4 или Case 4 To 5.

    Примечание. Ключевое слово Is можно не вводить, оно добавится само.

    Пример

    Рассмотренный выше пример с дисконтируемой ценой с помощью конструкции Select Case можно решить так:

    Public Function Стоимость_заказа2(Количество As Long) As Double

    Select Case Количество

    Стоимость_заказа2 = Количество * 5

    Case 1000 To 1999

    Стоимость_заказа2 = Количество * 4.8

    Case Is >= 2000

    Стоимость_заказа2 = Количество * 4.75

    Программа на VBA – это последовательность операторов.

    При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.

    Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» (_), в этом случае вторая строка будет считаться продолжением первой.

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

    1. Оператор Dim предназначен для объявления типов переменных.

    1. Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины .

    2. Dim D As Date – объявляется переменная D для хранения дат.

    3. Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.

    4. Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).

    5. Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.

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

    Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:

    Dim M() As Integer

    После определения числа элементов массива, например, N, необходимо записать оператор

    2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.

    Синтаксис:

    Переменная (или свойство объекта) = выражение.

    1. а=5 – переменной А присвоить значение 5 ;

    2. b=«Менеджер» – переменной b присвоить значение «Менеджер» ;

    · Адрес=Sheets("Организации").Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;

    · Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.

    o Оператор With/End with избавляет программиста от большого количества повторений имени одного и того же объекта.

    Синтаксис:

    With объект

    оператор1

    оператор2

    операторN

    Например, вместо последовательности операторов

    UserForm1.TextBox1.Text = Date

    UserForm1.TextBox2.Text = “ “

    UserForm1.ComboBox1.Text = “ “

    можно записать так

    TextBox1.Text = Date

    . TextBox2.Text = “ “

    . ComboBox1.Text = “ “

    REM На листе Лист1 в столбце А, начиная со второй строки, записаны ‘тарифы сотрудников. Заполним поле со списком ComboBox1 в ‘пользовательской форме UserForm1

    ‘Первая строка программы – на листе Лист1 в столбце А ‘подсчитывается количество заполненных ячеек, результат ‘присваивается переменной N

    N=Application.CountA(Sheets(“Лист1”).Range(“A:A”)).

    D=”A2:A”&Cint(N)

    Sheets(“Лист1”).Range(D).Name=”Тарифы”

    TextBox1.Text = Date

    . TextBox2.Text = “ “

    . ComboBox1.Text = “ “

    . ComboBox1.Rowsource = “Тарифы “

    1. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие

    Синтаксис:

    If условие Then операторы1 [Else операторы2]

    Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2.

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

    If условие1 Then

    операторы1

    ElseIf условие2 Then

    операторы2

    операторы3

    Фамилия=.TextBox1.Text

    If Фамилия =”“ Then MsgBox”Вы не ввели фамилию”

    REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5%

    ‘ Сумма – количество денег, выплачиваемых клиентом

    ‘ Стоимость товара хранится в переменной Стоимость

    If UserForm1.CheckBox1.Value = True Then

    Сумма=Стоимость-Стоимость*0.05

    Else Cумма=Стоимость

    1) REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты

    If IsNumeric(TextBox1.Text)=True And _

    IsNumeric(TextBox2.Text)=True Then

    Тариф=TextBox1.Text

    Время=TextBox2.Text

    Label4.Caption=Тариф*Время

    В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия ). Если переменная Фамилия пуста, то на экран выводится окно сообщения.

    Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом.

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

    1) Оператор безусловного перехода GoTo предназначен для задания перехода на указанную строку внутри программы.

    Синтаксис:

    GoTo Строка

    Обязательный аргумент Строка может быть любой меткой строки или номером строки.

    If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка

    Ошибка: MsgBox “Ошибка при вводе чисел!”

    В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение.

    2) Оператор цикла For/To/Next предназначен для программирования повторяющихся фрагментов, т.е. для описания циклических алгоритмов.

    Синтаксис:

    For переменная=M1 To M2 [Step M3]

    операторы

    M1, M2, M3 – выражения. Оператор цикла повторяет выполнение группы операторов, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то он полагается равным 1.

    Фамилия = Sheets(“Сотрудники”).Cells(I,1)

    UserForm1.ComboBox1.AddItem Фамилия

    В приведенном примере предполагается, что на листе «Cотрудники» в первом столбце записаны фамилии сотрудников, которые нужно внести в список поля со списком номер один пользовательской формы номер один. Алгоритм работы программы:

    1) Переменной I присваивается значение 2.

    2) Переменной Фамилия присваивается значение ячейки А(I,1), расположенной на листе «Сотрудники». (При первом выполнении цикла это ячейка А(2,1))

    3) В список поля со списком ComboBox1 добавляется элемент из переменной Фамилия.

    4) К значению переменной I добавляется 1 (если шаг не указан, то он полагается равным 1). Выполняется проверка, не превысила ли величина I 10 (конечного значения переменной I, в примере М3=10)? Если величина I еще меньше или равна 10, то выполняются пункты 2-4, в противном случае работа цикла заканчивается.

    Таким образом, приведенная программа позволяет заполнить данными список поля со списком ComboBox1.

    Основные алгоритмы, используемые при решении
    экономических задач

    Основные алгоритмы рассмотрим на следующем примере. В выполнении работы по договору участвовали сотрудники разных отделов. В таблице, на листе «Лист1» представлены данные о количестве отработанных часов каждым из сотрудников (рис.8).


    Рис.8.Данные о количестве отработанных часов

    сотрудниками фирмы


    Мир бесплатных программ и полезных советов
    2024 © whatsappss.ru