Выбрать главу

Создайте двухкнопочный проект с такой программой:

Dim a As Integer

Dim b As String

_____________

Private Sub Command1_Click()

   a = 98

   Debug.Print a

End Sub

_____________

Private Sub Command2_Click()

   b = "Привет всем!"

   Debug.Print b

End Sub

Сравним две процедуры.

Объявление Dim a As Integer говорит о том, что переменная а обязана иметь числовое значение, и поэтому в первой процедуре оператор а=98 записывает в ячейку а число 98.

Объявление Dim b As String говорит о том, что переменная b обязана иметь строковое (текстовое) значение, то есть ее значением будет не число, а произвольная цепочка символов, например, Привет всем! или рпН2Н(*fD6:u. Поэтому во второй процедуре оператор b ="Привет всем!" записывает в ячейку b строку Привет всем!. Оператор Debug.Print b, поскольку он обязан всегда выводить на экран содержимое ячейки Ь, выведет на экран текст Привет всем!

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

Информация в ячейке памяти под строковую переменную может в процессе выполнения программы меняться точно так же, как и в ячейке для числовой переменной. Например, при выполнении фрагмента

а="Минуточку!": Debug.Print а: а="3дравствуйте!": а="До свидания!":

Debug.Print а

в ячейке а будут по очереди появляться строки

Минуточку! Здравствуйте! До свидания!

а на экран будут выведены строки:

Минуточку!

До свидания!

Еще пример:

а="Цикл": Debug.Print а: а=а+а: Debug.Print а+а+а +"Конец цикла"

Поскольку знак + по отношению к строкам есть знак соединения, то а+а будет равняться "ЦиклЦикл" и это же — новое значение а. Поэтому здесь на экран будут выведены строки:

Цикл

ЦиклЦиклЦиклЦиклЦиклЦиклКонец цикла

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

Строковую переменную можно задавать не только оператором присваивания, но и функцией InputBox. При вводе ставить кавычки тоже не надо. Пример:

Dim a As String

Private Sub Command1_Click()

   a = InputBox("Введите какое-нибудь слово")

   Debug.Print "Вы ввели слово"; а

End Sub

Обратите внимание на пробел перед второй кавычкой в операторе Debug.Print.

Он нужен для того, чтобы слова при выводе не сливались.

Прежде, чем идти дальше, нужно, конечно, разобраться с хитросплетениями запятых, точек с запятыми, кавычек и пробелов в операторе Print:

Как выводить информацию оператором Print

Будем пробовать, вы тоже пробуйте:

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

Еще:

Что такое элемент? Мы видели, что это может быть число. А еще что? Выражение. Проверим:

В последнем операторе — два элемента.

До сих пор мы печатали только числовые переменные и выражения. Но элемент может быть и строкой:

Как видите, строку мы обязаны брать в двойные кавычки.

Как видите, если между строками стоит точка с запятой, они печатается вплотную друг к другу. Числа же в этом случае все-таки разделяются пробелами.

Как все же отодвинуть собаку от кошки на пару пробелов? Очень просто — поставьте эти два пробела внутри "собачьих" кавычек перед буквой С:

А можно внутри "кошачьих" после буквы а.

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

Элемент может быть строковой переменной или выражением:

Итак, элемент оператора Print может быть числом, числовой переменной и числовым выражением, а также строкой, строковой переменной и строковым выражением. Есть и другие типы, о них мы пока не говорим.