Создайте двухкнопочный проект с такой программой:
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 может быть числом, числовой переменной и числовым выражением, а также строкой, строковой переменной и строковым выражением. Есть и другие типы, о них мы пока не говорим.