Главная страница
Навигация по странице:

  • InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, Context]) Функция InputBox содержит один обязательный аргумент (prompt) и шесть необязательных. Prompt

  • Context Context . Числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо ука- зать также аргумент Helpfile.

  • InputBox вводит текстовую информацию. В случае если не- обходимо ввести числовую информацию, применяется функция Val

  • 5.3. Вывод результатов в окно отладки

  • Debug.Print [списокПечати] 59Синтаксис метода Print содержит следующий указатель объекта и ар- гумент: СписокПечати

  • {Spc(n) | Tab(n)} выражение позиция Spc(n). Указывает количество пробелов n, вставляемых в выводящийся текст. Tab(n)

  • Выражение . Числовое выражение или строковое выражение, опреде- ляющее выводящийся текст. Позиция

  • 5.4. Форматирование данных 5.4.1. Функция Format

  • 5.4.2. Примеры форматов Пример 1.

  • Пример 4. Вывести числа в формате, зависящем от значения числа. Напишем вначале функцию fprint

  • 5.4.3. Стандартные форматы Для вывода различной информации в VB существуют стандартные именованные числовые форматы: General Number

  • Fixed – отображает по крайней мере одну цифру слева и две цифры справа от десятичного разделителя. Standard

  • Percent – отображает число, умноженное на 100, со знаком процентов (%), добавленным справа. Всегда отображает две цифры справа от деся- тичного разделителя. Scientific

  • Yes/No – отображает значение "No" (Нет), если число равно 0; в противном случае отображает "Yes" (Да). True/False

  • On/Off – отображает значение "Off" (Выкл), если число равно 0; в противном случае отображает "On" (Вкл). Пример 5.

  • Программирование на visual basic


    Скачать 1.19 Mb.
    НазваниеПрограммирование на visual basic
    Анкорvb.pdf
    Дата05.06.2021
    Размер1.19 Mb.
    Формат файлаpdf
    Имя файлаvb.pdf
    ТипУчебное пособие
    #214287
    страница7 из 17
    1   2   3   4   5   6   7   8   9   10   ...   17
    Примечание
    . Данные константы определены в языке Visual Basic для при- ложений. Использование имен этих констант вместо их значений допуска- ется в любом месте программы.
    Возвращаемые значения MsgBox:

    56
    vbOK (1)
    – нажата кнопка OK.
    vbCancel (2)
    — нажата кнопка Отмена (Cancel).
    vbAbort (3)
    — нажата кнопка Прервать (Abort).
    vbRetry (4)
    — нажата кнопка Повторить (Retry).
    vbIgnore (5)
    — нажата кнопка Пропустить (Ignore).
    vbYes (6)
    — нажата кнопка Да (Yes).
    vbNo (7)
    — нажата кнопка Нет (No).
    Если указаны оба аргумента — helpfile и context, — пользователь имеет возможность нажатием клавиши F1 вызвать контекстную справку. Неко- торые главные приложения, например Microsoft Excel, также автоматиче- ски добавляют в диалоговое окно кнопку "Справка".
    Если окно диалога содержит кнопку "Отмена" (Cancel), нажатие кла- виши ESC эквивалентно нажатию этой кнопки. Если окно диалога содер- жит кнопку "Справка" (Help), значит, существует связанный с ним раздел справочной системы. Однако никакое значение не возвращается до тех пор, пока не будет нажата какая-либо другая кнопка.
    Примечание.
    Функцию MsgBox с двумя или большим числом аргументов можно использовать только в выражении. Наличие запятых, соответст- вующих отсутствующим аргументам, является обязательным.
    Пример.
    Sub TestMsgBox()
    Dim Msg As String, Style As String, Title As String, _
    Response As String, MyString As String
    Msg = "Обнаружена ошибка.” + Chr(10) +”Продолжить?" ' Сообщение
    Style = vbYesNo + vbCritical + vbDefaultButton2 ' Выводить Кнопки
    Title = "Пример" ' Заголовок диалового окна
    ' Вывод сообщения и возврат типа нажатой кнопки.
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then ' Нажата кнопка "Да" (Yes)
    MyString = "Да" ' Выполняет действие
    Else ' Нажата кнопка "Нет" (No)
    MyString = "Нет" ' Выполняет действие
    End If
    Response = MsgBox ("Была нажата кнопка "+ Chr(10) + MyString, _ “Воз- вращаемое значение”)
    MsgBox ("Программа закончила работу")
    End Sub
    В данном примере функция MsgBox вызывается три раза. При первом вызове функция имеет три первых фактических параметра. Создается окно диалога с сообщением об ошибке и кнопками "Да" (Yes) и "Нет" (No). Ос- новной является кнопка "Нет" (No). Значение, возвращаемое функцией
    MsgBox, зависит от того, какая кнопка была нажата пользователем. Второе обращение к функции MsgBox имеет два параметра, а вместо второго па- раметра стоит пробел. При обращении к функции MsgBox с одним пара-

    57
    метром допускается упрощенный вызов функции без использования воз- вращаемого значения.
    5.2. Функция InputBox
    Выводит на экран диалоговое окно, содержащее сообщение и поле вво- да, устанавливает режим ожидания ввода текста пользователем или нажа- тия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле.
    Синтаксис:
    InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, Context])
    Функция
    InputBox
    содержит один обязательный аргумент (prompt) и шесть необязательных.
    Prompt
    . Обязательный аргумент — строковое выражение, отображае- мое как сообщение в диалоговом окне. Строковое значение prompt может содержать нескольких физических строк. Для разделения строк допуска- ется использование символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинации этих символов (Chr(13) & Chr(10)).
    Title
    . Необязательный параметр, являющийся строковым выражением, отображаемым в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.
    Default
    . Строковое выражение, отображаемое в поле ввода как исполь- зуемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.
    Xpos
    . Числовое выражение, задающее расстояние по горизонтали меж- ду левой границей диалогового окна и левым краем экрана (в твипах). Ес- ли этот аргумент опущен, диалоговое окно выравнивается по центру экра- на по горизонтали.
    Ypos
    . Числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана (в твипах).
    Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана.
    Helpfile
    . Строковое выражение, определяющее имя файла справки, содер- жащего справочные сведения о данном диалоговом окне. Если этот аргу- мент указан, необходимо указать также аргумент
    Context
    Context
    . Числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо ука- зать также аргумент
    Helpfile.
    Примечание.
    Функцию InputBox с двумя или большим числом аргу- ментов можно использовать только в выражении. Наличие запятых, соот- ветствующих отсутствующим аргументам, является обязательным.

    58
    Пример 1.
    Sub ТестНаФункциюInputBox()
    Dim Message As String, Title As String, Default As String, MyValue As String
    Message = "Введите число от 2 до 5" ' Сообщение-подсказка.
    Title = "Пример использования функции InputBox" ' Заголовок
    Default = "5" ' Значение по умолчанию
    ' Выводит на экран сообщение, заголовок и значение по умолчанию
    MyValue = InputBox(Message, Title, Default)
    MsgBox( MyValue ) ‘ Вывод введенного значения
    ' Размещает верхний левый угол окна диалога в точке 100, 100
    MyValue = InputBox(Message, Title, Default, 100, 100)
    MsgBox( MyValue )
    End Sub
    В данном примере приведены различные способы получения сведений от пользователя с помощью функции InputBox. Если четвертый и пятый аргументы опущены, окно диалога автоматически выравнивается по цен- тру по соответствующим осям. Переменная MyValue содержит значение, введенное пользователем, если была нажата кнопка OK или клавиша
    ENTER. Если пользователь нажмет кнопку Отмена, функция возвратит пустую строку.
    Функция
    InputBox
    вводит текстовую информацию. В случае если не- обходимо ввести числовую информацию, применяется функция
    Val
    , кото- рая преобразует переменные типа String в Double.
    Пример 2.
    Ввести 10 чисел и найти максимальное из них.
    Sub МаксимальноеИз10Чисел()
    Const N = 10
    Dim Numb As Double, max As Double, i As Long max = -1.7E+308 ' Это минус бесконечность
    For i = 1 To N
    Numb = CDbl(InputBox("Введите " & i & "-ое число"))
    If Numb > max Then max = Numb
    Next i
    MsgBox ("Максимальное из введенных чисел =" & max)
    End Sub
    5.3. Вывод результатов в окно отладки
    Часто бывает удобно выводить результаты работы программы в окно отладки. Для этого используется объект Debug. Этот объект имеет всего лишь один метод Print, который выводит информацию в окно отладки.
    Метод Print выводит текст на панель проверки окна отладки.
    Синтаксис
    Debug.Print [списокПечати]

    59
    Синтаксис метода Print содержит следующий указатель объекта и ар- гумент:
    СписокПечати
    . Выражение или список печатающихся значений. Если этот аргумент опущен, выводится пустая строка.
    Для аргумента списокПечати используется следующий синтаксис и элементы:
    {Spc(n) | Tab(n)}
    выражение позиция
    Spc(n).
    Указывает количество пробелов n, вставляемых в выводящийся текст.
    Tab(n)
    . Помещает курсор в экранный столбец с номером n. Элемент
    Tab без аргумента помещает курсор в первый столбец следующей зоны пе- чати.
    Выражение
    . Числовое выражение или строковое выражение, опреде- ляющее выводящийся текст.
    Позиция
    . Указывает позицию, в которой выводится следующий сим- вол. Точка с запятой
    (;)
    помещает курсор непосредственно за последним выведенным символом.
    Tab(n)
    помещает курсор в экранный столбец с но- мером
    n
    . Элемент Tab без аргумента помещает курсор в первый столбец следующей зоны печати. Если аргумент позиция опущен, следующий символ выводится в начале новой строки.
    Для печати нескольких выражений следует разделять их точкой с запя- той или пробелом.
    Все данные отображаются в окне отладки с учетом национальной на- стройки. Используется соответствующее форматирование (с указанным символом десятичного разделителя), а ключевые слова выводятся на язы- ке, используемом в главном приложении.
    Пример.
    Затабулировать функцию двух переменных z(x,y) на прямо- угольнике x

    [a, b], y

    [c, d]. В точках, где функция не определена, поста- вить звездочки.
    Sub ТабуляцияФункций()
    Const N = 10, M = 10
    Dim a As Double, b As Double, U As Double, hx As Double, hy As Double
    Dim c As Double, d As Double, x As Double, y As Double, j As Long
    Dim z As Double a = 0: b = 1: c = 0: d = 1 hx = (b - a) / N: hy = (d - c) / M: ' Приращение координат по оси x и y
    j = 0 ' Позиция, с которой выводить очередное значение
    For y = c To d + hy / 10 Step hy ' Вывод координат y j = j + 7
    Вывести вертикальную линию и 6 левых символов
    ‘числа Left(Str(y), 6);
    2 2
    1
    y
    x
    z


    =

    60
    Debug.Print Tab(j); "|"; Left(Str(y), 6);
    Next y
    Debug.Print Tab(84); "|" '
    Debug.Print String(84, "-") ' Горизонтальная линия
    For x = a To b + hx / 10 Step hx ' Цикл по всем строкам таблицы
    ' Печать значения координаты x
    j = 0: Debug.Print Tab(1); Left(Str(x), 5); Tab(6); "|";
    For y = c To d + hy / 10 Step hy ' Цикл по всем строкам таблицы j = j + 7: U = 1 - x ^ 2 - y ^ 2
    If U > -0.1e-30 Then ' Если подкоренное выражение больше или ‘рав-
    но 0 z = Sqr(Abs(U)) : If z<0.1e-6 Then z=0
    Debug.Print Tab(j); "|"; Left(Str(z), 6);
    Else ' Если подкоренное выражение меньше 0
    Debug.Print Tab(j); "|"; "******";
    End If
    Next y
    Debug.Print Tab(j + 7); "|"
    Next x
    Debug.Print String(84, "-")
    End Sub
    Результаты работы данной программы представлены ниже.
    |0 |0,1 |0,2 |0,3 |0,4 |0,5 |0,6 |0,7 | 0,8 |0,9 |1 |
    --------------------------------------------------------------------------------------------------------
    0 ||1 |0,9949|0,9797|0,9539|0,9165|0,8660|0,8 |0,7141|0,6 |0,4358|0 |
    0,1 ||0,9949|0,9899|0,9746|0,9486|0,9110|0,8602|0,7937|0,7071 |0,5916|0,4242 |******|
    0,2 ||0,9797|0,9746|0,9591|0,9327|0,8944|0,8426|0,7745|0,6855 |0,5656 |0,3872|******|
    0,3 ||0,9539|0,9486|0,9327|0,9055|0,8660|0,8124|0,7416|0,6480 |0,5196 |0,3162|******|
    0,4 ||0,9165|0,9110|0,8944|0,8660|0,8246|0,7681|0,6928 |0,5916 |0,4472|0,1732|******|
    0,5 ||0,8660|0,8602|0,8426|0,8124|0,7681|0,7071|0,6244 |0,5099 |0,3316|******|******|
    0,6 ||0,8 |0,7937|0,7745|0,7416|0,6928|0,6244|0,5291 |0,3872 |1,0536|******|******|
    0,7 ||0,7141|0,7071|0,6855|0,6480|0,5916|0,5099|0,3872 |0,1414|******|******|******|
    0,8 ||0,6 |0,5916|0,5656|0,5196|0,4472|0,3316|0 |******|******|******|******|
    0,9||0,4358 |0,4242|0,3872|0,3162|0,1732|******|*****|******|******|******|******|
    1,0||0 |***** |***** |*****|******|******|******|******|******|******|*****|
    ----------------------------------------------------------------------------------------------------------
    Результаты работы программы представлены в таблице. Для того что- бы вывести фиксированное количество знаков действительного числа, в программе используются функции Str для перевода числа в строку и Left для вывода заказанного числа левых символов строки. Кроме того, для вы- вода горизонтальной линии используется функция String, которая выводит
    84 символа -. Для вывода чисел, начиная с нужной позиции, используется функция Tab.

    61
    5.4. Форматирование данных
    5.4.1. Функция Format
    Для вывода чисел в нужном формате можно еще использовать функ- цию Format. Эта функция переводит числовую информацию в строковую, и при этом можно указывать в каком виде нужно выводить эту информа- цию. Синтаксис функции следующий:
    Format(выражение [,формат])
    Параметр выражение определяет число, которое необходимо преобразовать.
    Параметр формат задает вид преобразованного числа. Этот параметр либо является именем стандартного формата, либо состоит из управляю- щих символов:
    0 – в этой позиции печатается цифра;
    # – не печатать замыкающие или ведущие нули;
    . – десятичная точка, отделяющая целую и дробную часть;
    , – разделитель тысяч;
    % – вывод числа в процентах. При этом число автоматически увеличивается в 100 раз;
    -+$() пробел – эти символы печатаются точно так, как показаны в стро- ке формата;
    (E- E+ e- e+) – экспоненциальный формат. Число цифр в целой части определяется числом символов 0 или # до десятичной точки. Число цифр в дробной части равно числу символов 0 после десятичной точки. Число цифр в показателе степени определяется числом символов 0 справа от сим- вола экспоненциального формата (но не больше 3).
    5.4.2. Примеры форматов
    Пример 1.
    Sub ТестОператораФормат1()
    Dim a As Double a = Atn(1) * 4000000 ' Это 1000000* π
    Debug.Print a; Format(a, "|# , ##0%"); Format(a, "| #,##0.0"); _
    Format(a, "| # ##0руб. 00коп "); Format(a, "| $# ### ##0")
    End Sub
    Результат этой программы представлен в следующей строке:
    3141592,65358979 |314 159 265%| 3 141 592,7| 3141 592руб, 65коп | $3 141 593
    Здесь в разном формате пять раз печатается одно и то же число
    1000000 π.

    62
    Пример 2.
    Вывести числа в экспоненциальном формате.
    Sub ТестОператораФормат2()
    Debug.Print Format(123456789," .0E-0"); Format(123456789, _
    " ##0.00e+0"); Format(123456789, " ## ##0.0000e-00"); _
    Format(123456789," # ##0.00e+000"); Format(123456789, _
    " .### ##0e+00")
    Debug.Print Format(0.001234, "0.00e-0"); Format(0.001234, _
    " .00000E+00")
    End Sub
    Результаты работы данной программы:
    ,1E9 123,46e+6 12 345,6789e04 1 234,57e+005 ,123 457e+09 1,23e-3 ,12340E-02
    В VB можно в одной функции Format задавать различные типы форма- тов для положительных, отрицательных, нулевых и неопределенных чи- словых значений.
    Пример 3.
    Вывести числа в формате, зависящем от знака числа.
    Sub ТестОператораФормат3()
    Dim a As Double, s As String, r a = Atn(1) * 4000000 ' Это 1000000* π s = " ##0.00e+0; (-#); 0; Число Не определено"
    Debug.Print Format(a, s); Format(-a, s); Format(0, s); Format(r, s) s = " ##0.00e+0; (-#); 0 "
    Debug.Print Format(a, s); Format(-a, s); Format(0, s); Format(r, s) s = " ##0.00e+0; (-#) "
    Debug.Print Format(a, s); Format(-a, s); Format(0, s); Format(r, s)
    End Sub
    В этом примере в окно отладки три раза выводятся четыре числа: по- ложительное, отрицательное, нулевое и неопределенное по формату, опре- деленному в строковой переменной s. Результаты работы программы:
    314,16e+4 (-3141593) 0 Число Не определено
    314,16e+4 (-3141593) 0 314,16e+4 (-3141593) 000,00e+0
    Можно написать личную функцию, которая автоматически выбирает формат вывода числа в зависимости от диапазона числа.
    Пример 4.
    Вывести числа в формате, зависящем от значения числа.
    Напишем вначале функцию
    fprint,
    выбирающую формат вывода в за- висимости от значения аргумента и печатающую аргумент в выбранном формате.
    Function fprint(x As Double)
    Dim s As String, a As Double a = Abs(x)
    ‘Выбор формата в зависимости от абсолютного значения
    ‘величины x
    If a > 1000000 Then s = " # ##0.000e-00"

    63
    ElseIf a > 1000 Then s = " #0.000e-0"
    ElseIf a > 10 Then s = " ##0.000"
    ElseIf a > 0.1 Then s = " 0.### ##0"
    ElseIf a > 0.00001 Then s = " 0.0000e-0"
    Else s = " 0.0000000e-000"
    End If
    ' Вывод числа a по полученному формату s
    Debug.Print Format(x, s); " ";
    End Function
    Напишем теперь тестирующую программу для широкого диапазона чи- сел.
    Sub ТестОператораФормат4() fprint (123456789): fprint (123456.789): fprint (123.456789) fprint (1.23456789): Debug.Print fprint (0.123456789): fprint (0.000123456) fprint (1230000000000#): fprint (0.0000000123)
    End Sub
    В этой программе 8 раз вызывается наша функция
    fprint.
    Оператор
    Debug.Print необходим для перевода выводимой информации на другую строку.
    Результаты работы данной программы:
    1 234,568e05 12,346e4 123,457 1,234 568 0,123 457 1,2346e-4 1 230,000e09 1,2300000e-008
    5.4.3. Стандартные форматы
    Для вывода различной информации в VB существуют стандартные именованные числовые форматы:
    General Number

    отображает число без разделителей групп разрядов.
    Currency
    – отображает значение с разделителями групп разрядов (если требуется). Обозначение денежной единицы и ее положение относительно числа определяется текущей национальной настройкой.
    Fixed
    – отображает по крайней мере одну цифру слева и две цифры справа от десятичного разделителя.
    Standard
    – отображает по крайней мере одну цифру слева и две цифры справа от десятичного разделителя, а также разделители групп разрядов.
    Percent
    – отображает число, умноженное на 100, со знаком процентов
    (%), добавленным справа. Всегда отображает две цифры справа от деся- тичного разделителя.
    Scientific
    – использует стандартную экспоненциальную нотацию.

    64
    Yes/No
    – отображает значение "No" (Нет), если число равно 0; в противном случае отображает "Yes" (Да).
    True/False
    – отображает значение False, если число равно 0; в про- тивном случае отображает True.
    On/Off
    – отображает значение "Off" (Выкл), если число равно 0; в противном случае отображает "On" (Вкл).
    Пример 5.
    Вывести числа в стандартных именованных форматах.
    Sub ТестОператораФорматСтандартные()
    Dim a As Double: a = Atn(1) * 4000
    Debug.Print Format(a, "General Number") + " " + Format(a, _
    "Currency") + " " + Format(a, "Percent") + " " + Format(a, "fixed") + _
    " " + Format(a, "Scientific")
    Debug.Print Format(a, "Yes/No") + " " + Format(0, "Yes/No") + " " _
    + Format(a = a, "True/False") + " " + Format(-a, "On/Off")
    End Sub
    Результаты работы программы:
    3141,59265358979 3 142р. 314159,27% 3141,59 3,14E+03
    Да Нет Истина Вкл
    1   2   3   4   5   6   7   8   9   10   ...   17


    написать администратору сайта