Неважно как написано TextBox1.Text или TextBox1. Для текстбокса свойством по умолчанию является Text. Для label - caption и т.д. Для Cells() - Value по умолчанию. То есть, указывать такое свойство после точки не обязательно. Хотя, где-то я читала, что указывать свойство хорошо для читабельности и вроде как влияет на скорость, т.к. VB сначала должен найти, что за свойство по умолчанию, проверить корректность присваиваемых значений и т.п.
Val(TextBox) преобразует значение в число. так например значение "256 326значение" будет преобразовано в число 256326.
Val() всегда! преобразует строку в число. Если в строке не число, то получим 0.
Но есть некоторые особенности преобразования строки к числам с десятичным разделителем. Например,
I) системный разделить - запятая
системный разделитель в строке:
val("0,4") = 0
CDbl("0,4") =0,4
несистемный разделитель в строке:
val("0.4") = 0,4
CDbl("0.4") => Type mismatch
II) системный разделить - точка
системный разделитель в строке:
val("0.4") = 0.4
CDbl("0.4") = 0.4
несистемный разделитель в строке:
val("0,4") = 0
CDbl("0,4") =0.4
Удивительные результаты ))) т.е. по-любому нужно извращаться. Определить разделитель, и в зависимости от этого действовать!
Т.о. в конкретно приведенном вами примере нужно знать, что там вводится и как вводится.
Так например, если при системном разделителе 'запятая' ввести 0.4 и использовать CDbl(), то возникнет ошибка.
А если при любом сист. разделителе ввести 0,4 и использовать Val(), то получим некорректный результат.