Страницы: 1
RSS
На каком мониторе?
 
Вечер добрый всем!  
Пишу с надеждой, что кто-нибудь откликнется.  
Задача: Компьютер с двумя мониторами. При запуске на 1-ом отображение окон UserForm с параметром - StartUpPosition:CenterOwner по центру экрана монитора, однако на 2-ом мониторе UserForm's запускающиеся при запуске файла отображаются по центру монитора, а UserForm's вызывающиеся в процессе работы отображаются по центру слева (как будто параметр - StartUpPosition:Windows Default). Так вот хочу переделать параметр - StartUpPosition:Manual и высчитывать положение окна UserForm в зависимости от того, на каком мониторе запущен файл.  
Какое разрешение монитора я могу узнать (здесь нашёл функцию), а вот на каком мониторе не знаю!  
Я очень надеюсь, что кто-нибудь поможет. Приму с огромной благодарностью!  
 
P.S.: если будут другие предложения, как выйти из этой ситуации (по-другому) также заранее благодарен.
 
А мониторы разные? Всмы, разрешение?  
А в винде они как организованы? Как один (единый) рабочий стол или два?  
Завтра буду у двух мониторов - попробую, хотя не совсем понимаю выражение "При запуске на 1-ом" - это на каком окно экселя?
Bite my shiny metal ass!      
 
Разрешение на обоих мониторах одинаковое 1600*1200 (24-х дюймовые), рабочий стол на 1-ом монике, в настройках Винды ХРюши есть разделение на моники (1-ый моник слева, 2-ой справа если просто), система запоминает на каком монике было запущенно приложение.  
Замеченна ещё такая вещь: если файл Excel на 1-ом и редактор VBA на 1-ом, то всё работает отлично, но если редактор VBA запустить на 2-ом (файл на 1-ом), то UserForm's появляется на 2-ом по центру слева.  
 
P.S.: инфа на сколько я помню, завтра пойду на работу и всё ещё раз уточню (настройки мониторов и раб/стола).
 
Привет всем!!!  
Настройки я уточнил: во вложенном файле.  
Саму прогу на Excel или хотя бы часть её (долго разбивать, но завтра попробую минимум слепить) выложить не могу (даже без несущественных окон, модуля обновления и заставок) весит в минимальном варианте 2Мб (обучался программированию на Pascal для КУВТ2 (Yamaha) в начале 90-х, сейчас пытаюсь вспомнить - получаются громозские коды, поэтому хочу поучиться новому).  
 
P.S.: может кто-нибудь знает - как зафиксировать положение окна UserForm'ы после его перемещения по экрану для того, чтобы оно отображалось в этом месте при следующем запуске файла?
 
А попробуйте макрорекордером перемещения окон записать с одного монитора на другой. Правда не знаю, запишет ли он перемещения формы... Но, во всяком случае, полученные  цифры можно будет использовать в коде формы, имхо.
 
StartUpPosition:CenterOwner вручную:  
 
UserForm1.StartUpPosition = Manual  
With Application  
UserForm1.Top = .Top + .Height / 2 - UserForm1.Height / 2  
UserForm1.Left = .Left + .Width / 2 - UserForm1.Width / 2  
UserForm1.Show  
End With  
 
про PS:  
 
запоминать положение, например, в ячейку:  
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)  
Cells(1, 1) = Me.Top  
Cells(1, 2) = Me.Left  
End Sub  
 
При запуске формы "вспоминать":  
Private Sub UserForm_Initialize()  
Me.Top = Cells(1, 1)  
 Me.Left = Cells(1, 2)  
 
End Sub
Bite my shiny metal ass!      
 
И, да, действительно, форма ведет себя по разному в зависимости от положения окна VBA. Причем даже закрытого.  
 
У меня остался вопрос: как записать программно UserForm1.Top и UserForm1.Left так чтобы они сохранились в книге и не нужно было при открытии использовать Private Sub UserForm_Initialize()
Bite my shiny metal ass!      
 
Спасибо огромное!!!  
Вариант с сохранением подходит как нельзя к стати, в проге есть лист с разнообразными промежуточными значениями (для откатов изменений) и места на нём хватит для сохранения параметров положения окон, это даже лучше, чем постоянное позиционнирование в центр (некоторые окна загораживают данные).  
Насчёт вашего оставшегося вопроса: действия при активации формы - этот код у меня используется и вписать туда пару строчек ни чего плохово не будет, на размер файла особо не повлияет, так как основная обновляющаяся ежедневно база составляет в среднем 11000 строк, а на пике и до 20000 доходит.  
 
СПАСИБО ОГРОМНОЕ всем кто в прошлом и сейчас советовал, помогал или пробовал помоч в том числе и мне, за очень великолепную ПЛАНЕТУ!!!  
С вашей помощью, разборов в других темах и просто хороших идей наконется был создан монстр - прога по расчёту платежей по кредиту (ранее в темах я у Вас у всех консультировался и обещал сообщить когда будет готова) со всякими наворотами, прибамбасами (считает всё до копейки, собственный интерфейс, возможность обновления проги как по сети, так и с носителя и др.), если кому интересно посмотреть, по тестить или на худой конец посмотреть на первые попытки программирования в VBA и на огромные функции в ячейках сообщите мне, я вышлю прогу помылу (сюда не влезет по размеру).
 
С удовольствием ознакомлюсь с программой. Если не сложно, вышлите пожалуйста на мой адрес dukesno4ta@mail.ru
 
Тема интересная, если пришлёте на sergeyizotov@yandex.ru - буду признателен!
 
Если можно    
alexvarvinskj@rambler.ru  
Спасибо!
 
slav@me.by
 
Кому нибудь файл прислали?
Страницы: 1
Читают тему
Наверх