Консультация № 175798
03.01.2010, 22:46
0.00 руб.
0 7 1

Уважаемые эксперты, подскажите в следующем, в своём коде я MsgBox пишу всегда с $, то есть MsgBox$, вот столкнулся, написал:
If MsgBox$("Если Вам требуется " & Chr$(13) & "Если Вам не требуется ", vbYesNo, "ВНИМАНИЕ") = vbYes Then Beep
Почему то выделяет MsgBox$, убираю $, всё нормально, скажите почему?
И самое интересно всемогущего Option Explicit нет и в помине!!!
А также подскажите, насколько я понимаю по умолчанию MsgBox при появлении имеет некий размер, можно ли ему задать свой размер.
Спасибо Эндрю

Обсуждение

давно
Модератор
137394
1850
04.01.2010, 00:09
общий
Ципихович Эндрю:
Знак $ обозначает, что значение имеет строковый тип. MsgBox же возвращает целое.
Вообще не вижу большого смысла писать Chr$(13), а не просто Chr(13).
Задать размер окна MsgBox явно нельзя, оно определяется контентом сообщения (то есть, содержимым того, что Вы выводите).
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Профессор
230118
3054
04.01.2010, 01:59
общий
это ответ
Здравствуйте, Ципихович Эндрю.

$ в конце переменной или функции означает строковый тип. А MsgBox - это функция, которая возвращает целое. Поэтому его нельзя писать с $. Option Explicit означает, что все переменные необходимо объявлять явно. Это имеет значение для больших программ, когда опечатка может создать две разные переменные. Если все переменные объявлены, компилятор обнаружит ошибку сам. Вместо MsgBox можно вызывать собственную форму и установить ему размер по желанию.
5
Неизвестный
04.01.2010, 20:51
общий
Разобрался сам и поясню другим, или себе вдруг забуду. В случае
If MsgBox("Если Вам требуется " & Chr$(13) & "Если Вам не требуется ", vbYesNo, "ВНИМАНИЕ") = vbYes Then Beep
Пишется без $
В случае MsgBox$ "Если Вам требуется ", "ВНИМАНИЕ"
Пишется желательно с $

давно
Профессор
230118
3054
04.01.2010, 21:00
общий
Ципихович Эндрю:
Зачем?
Неизвестный
04.01.2010, 21:40
общий
Ashotn:
Сейчас я не найду ссылку, откуда прочитал, но во всех переменных типа Стринг поставите $, хуже не будет, получите выиграш в скорости, бешенная скорость код будет работать на 5 милисекунд быстрей, главное найти секундомер ОМЕГА
давно
Профессор
230118
3054
04.01.2010, 22:07
общий
Ципихович Эндрю:
MsgBox не переменная, а функция.
Неизвестный
04.01.2010, 22:22
общий
Ashotn:
Извиняюсь, в терминах я называю согласно своего представления, я до сих пор не понимаю всеми Вами экспертами слово "возвращает"
Он, что занимал, брал на прокат, по этому слову возвращает отвечать не надо, не пойму всё равно, если только его не заменить другим словом, более естественным например становится равным
По этому вопросу дословно из интернета:
'Если Вам нужно производить множество операций с файлами или с переменными типа String, всегда добавляйте знак $ после имени команды например, Mid$ вместо Mid, потому что Mid работает с параметрами типа Variant, в то время, как Mid$ работает с параметрами типа String что в 3 раза быстрее, например: Right$, Left$, RTrim$, LTrim$, Trim$, Mid$, StrReverse$, UCase$, LCase$.
Форма ответа