Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Подключаешь Tools/References
Microsoft Forms 2.0 Object Library
Microsoft Visual Basic for Application Extesibility 5.3
В настройках безопасности разрешаешь модификацию VBProject
 
Добавляешь модуль с названием "QuestionFormModule"
Размещение элементов управления всё на тебе, добавление 1 "галочки" для примера

Код:
 
Option Explicit
Public Sub ShowQuestionForm()
MyShowForm1.Controls.Add "Forms.CheckBox.1", "myCheck1"
MyShowForm1.Show
End Sub
 

Далее, в другом модуле следующий код процедуры вызова этой формы

Код:
 
Public Sub CreateQuestionForm()
    Dim pVBE As VBProject
    Dim pForm As VBComponent
    Dim pModule As CodeModule
    Dim sFormName As String, vId As Long
    Dim sParts As String, sNewName As String
     
    'получаем ссылку на проект
    Set pVBE = Application.VBE.ActiveVBProject
    Set pModule = pVBE.VBComponents("QuestionFormModule").CodeModule
 
    'получаем номер формы, как часть её имени
    '3 строка в модуле "QuestionFormModule" должна начинаться
    'с "MyShowForm"
    sParts = Mid$(pModule.Lines(3&, 1&), 11&, InStr(11&, pModule.Lines(3&, 1&), ".") - 11&)
    vId = CLng(sParts)
    'получаем название создаваемой в проекте формы
    sFormName = "MyShowForm" & CStr(vId)
 
    'создаём форму
    Set pForm = pVBE.VBComponents.Add(vbext_ct_MSForm)
    pForm.Name = sFormName
 
    'вызываем форму на выполнение
    ShowQuestionForm
 
    'удаляем форму из проекта
    pForm.DesignerWindow.Close
    pVBE.VBComponents.Remove pForm
    Set pForm = Nothing
 
    'назначаем новое имя формы, увеличив её номер на 1 в процедуре
    'формирования и запуска формы (иначе сбой при повторном запуске)
    sNewName = "MyShowForm" & CStr(vId + 1&)
    For vId = 3& To pModule.CountOfLines
        pModule.ReplaceLine vId, Replace(pModule.Lines(vId, 1&), sFormName, sNewName)
    Next vId
End Sub
 


Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 17:49 13-05-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru