Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 592
от 19.08.2007, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 303, Экспертов: 43
В номере:Вопросов: 1, Ответов: 4


Вопрос № 98350: Здравствуйте! Вопрос: 1. Мне нужно написать программу, которая работает с пользовательским типом данных. Программа выглядит так: Option Explicit Type tabl Nazvanie As String Autor As String Tirag As Long I...

Вопрос № 98.350
Здравствуйте!
Вопрос:
1. Мне нужно написать программу, которая работает с пользовательским типом данных.
Программа выглядит так:

Option Explicit
Type tabl
Nazvanie As String
Autor As String
Tirag As Long
Izdatelstvo As String
End Type
Dim T(1000) As tabl, i As Integer

Private Sub CommandButton1_Click()

End Sub

Private Sub UserForm_Click()

End Sub

Этот текст находится в модуле формы, я полагаю, что пользовательский тип нельзя определять в модуле формы, потому и выходит такая ошибка при компиляции - "Compile error:
Cannot define a Public user-defined type within an object module"

2. И еще один вопрос, для чего применяют опцию Option Explicit в начале модуля программы и в каких случаях вообще применяют?
Отправлен: 14.08.2007, 12:16
Вопрос задал: _Alexey_ (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Alexander N. Monastyrsky
Здравствуйте, _Alexey_!
1. Public Type tabl
Nazvanie As String
Autor As String
Tirag As Long
Izdatelstvo As String
End Type
Пользовательский тип требует опубликования.
2. Option Explicit - используется на уровне файла для реализации явного объявления всех переменных.
Из МСДН в приложении обьяснение

Приложение:

---------
Страшен Русский сервис, бессмысленный и беспощадный...

Ответ отправил: Alexander N. Monastyrsky (статус: 1-ый класс)
Ответ отправлен: 14.08.2007, 13:31
Оценка за ответ: 4
Комментарий оценки:
Так пользовательский тип может быть объявлен в модуле формы?

Отвечает: Werwy
Здравствуйте, _Alexey_!
Публичные объявления, в том числе пользовательские типы должны находится в модуле Project/add module иначе выскакивает приведенная в вопросе ошибка компиляции.
По второму вопросу. Option Explicit применяется для принудительного объявления переменных (а также констант, массивов и т.д.). если данная опция не включена, то объявление происходит при первом случае появления переменной в коде, при включении для всех переменных, встречающихся в коде и не обявленных в разделе General declarations, будет появлятся предупреждение: Compile error: Variable not defined
---------
Слишком яркое солнце порождает пустыню
Ответ отправил: Werwy (статус: 2-ой класс)
Ответ отправлен: 14.08.2007, 14:12
Оценка за ответ: 5
Комментарий оценки:
Ответ, что надо, спасибо!

Отвечает: Черников Игорь Владимирович
Здравствуйте, _Alexey_!
1. Пользовательский тип данных желательно объявлять в модуле, это очень удобно.
2. Опцию Option Explicit применяют для того, что бы корректно самому объявить все переменные. Программа не запустится, если есть хоть одна не объявленная переменная, VB подскажет Вам где и какая. После этого эту строку Option Explicit можно убрать, компилятор её не использует и от этого ничего не изменится.
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 3-ий класс)
Ответ отправлен: 14.08.2007, 16:17
Оценка за ответ: 5
Комментарий оценки:
Теперь мне понятно все, спсибо! :)

Отвечает: Ualife
Здравствуйте, _Alexey_!
1. Создайте модуль Project->Add module и внесите в него пользовательский тип данных
2. По идее во всех. Они помогают избавляться от некоторых ошибок при работе с переменными
---------
Нет границ - есть лишь препятствия!
Ответ отправил: Ualife (статус: 3-ий класс)
Ответ отправлен: 16.08.2007, 18:49
Оценка за ответ: 5
Комментарий оценки:
Весьма благодарен, так и зделал, ошибка выходить перестала!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное