Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2013, 20:33   #1
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию Как программно вставить OptionButton в Frame?

Доброго времени суток всем,

Подскажите пожалуйста,
Как программно вставить OptionButton внутрь рамки?

Пытаюсь сделать вот таким способом:

Private Sub UserForm_Initialize()
With UserForm2
Set FrameM1 = .Controls.Add("Forms.Frame.1", "FrameM1", True)
With FrameM1
.Left = 20
.Top = 20
.Height = 30
.Width = 300
.Caption = ""
End With
Set OptionButtonM1 = .Controls.Add("Forms.OptionButton.1 ", "OptionButtonM1", True)
With OptionButtonM1
.Left = 30
.Top = 30
.Height = 30
.Width = 30
.Caption = ""
End With
End With
End Sub

ошибок не выдает, но рамка размещается поверх OptionButton, и OptionButton не видно даже, подскажите как сделать правильно?
iNataliya вне форума Ответить с цитированием
Старый 20.09.2013, 20:53   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Set OptionButtonM1 = FrameM1.Controls.Add

Код:
Private Sub UserForm_Initialize()
    With UserForm2
        Set FrameM1 = .Controls.Add("Forms.Frame.1", "FrameM1", True)
        With FrameM1
            .Left = 20: .Top = 20: .Height = 30: .Width = 300: .Caption = ""
        End With
        
        Set OptionButtonM1 = FrameM1.Controls.Add("Forms.OptionButton.1", "OptionButtonM1", True)
        With OptionButtonM1

        End With
    End With
End Sub
А вообще, это плохая идея, - генерировать элементы управления на форме программно.
Такая потребность возникает крайне редко, - примерно в 0,1% задач, связанных с макросами.

Вы опишите, зачем вы это делаете, - может, посоветуем способ попроще...

Обычно элементы управления добавляются на форму вручную, а потом программно скрываются или отображаются.
EducatedFool вне форума Ответить с цитированием
Старый 20.09.2013, 21:29   #3
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию

Спасибо, огромное, все получилось! Я так пробовала, но Эксель ругался, оказалось что просто ОптинонБатон выходил за края рамки, т.к. я не учла, что начало координат в верхнем левом углу рамки, а не формы.

Еще раз Спасибо.

По поводу зачем: задача стоит таким образом что надо дать возможность пользователю самому настраивать какие кнопки будут на форме а какие нет.

А почему идея плохая? Ну кроме того, что я не вижу как реально выглядит форма, пока ее не отображу?
iNataliya вне форума Ответить с цитированием
Старый 20.09.2013, 22:29   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А почему идея плохая?
потому что сложно это всё
куча кода, модули класса (иначе как вы будете отслеживать события с созданных элементов управления?), сложность с позиционированием, и т.д. и т.п.

сложная это задачка, - конструктор форм в Excel
я бы, пожалуй, не стал бы с этим связываться, - уж очень много времени на программу уйдет.
Куда проще вручную нарисовать форму со ВСЕМИ кнопками, назначить им всем макросы, - а потом создать 2-3 копии формы с меньшим количеством кнопок)
EducatedFool вне форума Ответить с цитированием
Старый 20.09.2013, 22:30   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
надо дать возможность пользователю самому настраивать какие кнопки будут на форме а какие нет
Всеже лучше делать так, как написано выше
Цитата:
Обычно элементы управления добавляются на форму вручную, а потом программно скрываются или отображаются.
Надежнее.
упс))
EducatedFool уже сам все расписал
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как рассчитать fcs - frame check sequence _Night_Scream_ Работа с сетью в Delphi 10 04.09.2013 10:14
Программно вставить поле TOC doober Microsoft Office Word 2 24.10.2011 23:23
Как у Frame сделать закругленные края? pavellyba Общие вопросы Delphi 1 16.04.2011 03:13
Как научить программу создавать несколько Frame? pavellyba Общие вопросы Delphi 3 05.04.2011 00:18
как OptionButton сделать не доступними несколько CheckBox-ов mars56 Microsoft Office Excel 14 20.01.2010 14:27