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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2015, 13:34   #1
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
Восклицание Общее управление положением контролеров в форме

Есть форма в которой мультипейджес. 2 страницы из них должны быть идентичны по дизайну. Названия контролов одинаковы, разница только, что на второй странице к имени контрола добавлена цифра 2: ComboBox и ComboBox2.
Как с помощью кода сделать одинаковое расположение контролов на двух страницах, но не прописывать положение каждого контрола отдельно, а сделать это общей командой (форма большая с множеством контролеров и лэблов).
То есть заменить вот этот код на более простой:
Код:
Private Sub UserForm_Initialize()
labour2.Top = labour.Top
labour2.Height = labour.Height
labour2.Left = labour.Left
labour2.Width = labour.Width
End Sub

Последний раз редактировалось yurkagagarin; 16.01.2015 в 22:04.
yurkagagarin вне форума Ответить с цитированием
Старый 16.01.2015, 17:50   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А зачем программно двигать контролы?
Не проще один раз их вручную разместить на форме в нужных местах?
EducatedFool вне форума Ответить с цитированием
Старый 16.01.2015, 18:14   #3
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
По умолчанию

Когда их несколько сот, то двигать их вручную так чтобы на обеих страницах они были на тех же местах это адъ и Израиль. Плюс если по желанию заказчика, а оно всегда есть, надо что-то менять в их расстановке, то опять же гемор. А так на одной странице их расставил, а вторая автоматом через инициализавию изменится.
yurkagagarin вне форума Ответить с цитированием
Старый 16.01.2015, 21:51   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Ну если страници полностью одинаковы, то может вообще отказаться от 2 страниц?
Как-то упорядочить, засунуть в массивы.
Несколько сот это, конечно круто!
Полюбопыствовать можно: а что за контролы? ( не контролеры)
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 16.01.2015, 21:54   #5
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Если, конечно имена у них соответствующие, то можно в цикле по контролам установить координаты и размеры
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 16.01.2015, 21:55   #6
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
По умолчанию

alex77755, Нет, нужно именно 2 страницы (муж и жена).
Обычные контролы: Label,TextBox, ComboBox, OptionButton, CheckBox, Frame
Из-за Фреймов и Лэйблов и получается большое количество.
yurkagagarin вне форума Ответить с цитированием
Старый 16.01.2015, 21:56   #7
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Если, конечно имена у них соответствующие, то можно в цикле по контролам установить координаты и размеры
А вот как?
yurkagagarin вне форума Ответить с цитированием
Старый 16.01.2015, 22:04   #8
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Код:
Private Sub UserForm_Activate()
Dim C
    For Each C In Controls
        If C.Name <> "MultiPage1" And InStr(1, C.Name, "2") = 0 Then
            With Controls(C.Name & 2)
            .Left = C.Left
            .Top = C.Top
            .Height = C.Height
            .Width = C.Width
            End With
        End If
    Next
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru

Последний раз редактировалось alex77755; 16.01.2015 в 22:07.
alex77755 вне форума Ответить с цитированием
Старый 16.01.2015, 22:09   #9
yurkagagarin
Пользователь
 
Регистрация: 16.01.2015
Сообщений: 16
По умолчанию

Даёт ошибку на строке с Left
http://c2n.me/3aBdBG6
yurkagagarin вне форума Ответить с цитированием
Старый 16.01.2015, 22:17   #10
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

У меня на 3 контролах не даёт.
Скорей всего нет дубля у объекта
Как, например у меня у "MultiPage1". Я его пропускаю
Добавь строчку и смотри в дебаггере на каком контроле ошибка
Код:
 Debug.Print C.Name, C.Name & 2
            With Controls(C.Name & 2)
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общее решение *Катюшка* Помощь студентам 0 23.12.2011 19:52
Управление положением мыши, WPF Marinne WPF, UWP, WinRT, XAML 1 07.05.2011 00:28
Перемещение объекта по форме.(Управление с клавиатуры) gralex10 Помощь студентам 1 28.03.2011 15:57
Создание устройств(электроника, программирование контролеров и тд и тп) Пепел Феникса Компьютерное железо 14 13.09.2010 15:45
Управление клавишами при скрытой форме. Xcopy Общие вопросы Delphi 2 02.04.2009 17:23