Если вам не нравится строка Project1 в заголовке окна, то вы можете задать свою строку, так дополнив оператор:
а = InputBox("Введите ширину прямоугольника", "Ввод данных")
Результат — >
Почему плохо не объявлять переменные величины
Посмотрим, где Visual Basic дает сбой, если не объявлять переменные величины. Рассмотрим простую задачу:
Даны три стороны треугольника. Вычислить его периметр.
Создаем новый проект с кнопкой для задачи о треугольнике. По аналогии с процедурой о прямоугольнике легко пишем процедуру для треугольника:
неправильная процедура:
Private Sub Command1_Click()
а = InputBox("Введите первую сторону треугольника")
b = InputBox("Введите вторую сторону треугольника")
с = InputBox("Введите третью сторону треугольника")
р = а + Ь + с
Debug.Print р
End Sub
Запускаем проект, вводим стороны — 2, 3, 4 и какой результат мы видим? Вместо 9 мы видим 234! Почему? Здесь тот же случай, что и с калькулятором, там было то же самое, пока мы не применили Val. Почему? Первое: Visual Basic считает содержимое текстового поля окна InputBox (точно так же, как и содержимое обычного текстового поля) текстом, а не числом, если даже оно состоит из цифр. А раз так, то и переменные а, Ь, с, берущие свое значение из текстового поля, он тоже считает текстовыми, а не числовыми. Второе: Visual Basic знает, что по правилам языка знак + имеет несколько смыслов в зависимости от того, к чему он применяется. В частности, при работе с текстом это не приказ складывать, а приказ выстраивать в цепочку. А раз так, то и результат получился тот, что мы видели.
Наши необъявленные переменные, как голодные дворняги, готовы есть все, что им дают. Введите вместо трех чисел три таких текста: Ко, ро, бочка. Результат — Коробочка.
Почему же тогда в примере о прямоугольнике все прошло нормально? Потому что там было еще умножение. Visual Basic знает, что по правилам языка знак умножения * не имеет смысла при работе с текстом. Значит (догадывается умный и услужливый Visual Basic) мой господин — человек не хочет, чтобы переменные а, Ь, с были текстовыми. Значит быть им числовыми! Проверьте: подсуньте компьютеру вместо чисел коробочку — Visual Basic запротестует.
В примере о прямоугольнике Visual Basic догадался правильно, а в примере о треугольнике ума не хватило. Ну что, теперь везде при сложении применять Val? Не хочется, программы будут получаться громоздкими. Да и разве все дело только в сложении? Как узнаешь, где в следующий раз соломки подстелить?
Так вот, чтобы не перенапрягать умственные способности Visual Basic и предохранить себя от неприятностей, нужно все переменные величины объявлять!
Как объявлять переменные величины
Добавим в окно кода нашего проекта, на самый верх, над заголовком процедуры четыре строки. Получится:
правильная процедура:
Dim a As Integer
Dim b As Integer
Dim с As Integer
Dim p As Integer
Private Sub Command1 Click()
а = InputBox("Введите первую сторону треугольника")
b = InputBox("Введите вторую сторону треугольника")
с = InputBox("Введите третью сторону треугольника")
р = а + b + с
Debug.Print а, b, с, p
End Sub
Объявление
Dim а As Integer
переводится так:
Переменная а величина как целое число
то есть вы обязуете Visual Basic обращаться с переменной величиной а как с целым числом и ничем иным. Говорят, что "переменная а имеет тип Integer". Аналогично объявлены и переменные Ь, с, р. Объявления будем пока писать выше процедур.
Запустите проект. Проверьте его работу.
Вместо четырех строк
Dim a As Integer
Dim b As Integer
Dim с As Integer
Dim p As Integer
можно для краткости написать одну:
Dim a As Integer, b As Integer, с As Integer, p As Integer
Но если вы захотите написать еще короче:
Dim а, Ь, с, р As Integer
то Visual Basic неправильно вас поймет.
Типы данных
Много ли прав у Integer? Посмотрим. Попробуем ввести дробное значение первой стороны треугольника — 2,3. Именно так — с запятой, а не точкой. Посмотрим результат. Visual Basic считает а целым числом 2. А теперь — 2,6.
Visual Basic считает а целым числом 3. Все правильно. Наш барон высокомерно отказывается быть дробным числом и поэтому любое число, которое мы ему предлагаем, округляет до целого.