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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2009, 03:22   #1
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию Автоматическое изменение размера формы в соответствии с размером экрана

Есть UserForm, размером 400x400. Возможно ли реализовать следующий запрос:
чтобы макрос подгонял размер формы, при ее открытии, под размер экрана. Например: размер экрана 800x600, форма принимает размер чуть меньше - 600x400. Экран - 1024x768, а форма - 824x568. Экран - 1280x800, форма - 1080x600 Т.е. получается на 200 единиц каждый параметр меньше.
ru3000 вне форума Ответить с цитированием
Старый 28.07.2009, 05:01   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Определить разрешение экрана можно при помощи WinAPI-функции. Например:
Код:
Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
    
Sub test()
    x = GetSystemMetrics(0)
    y = GetSystemMetrics(1)
    MsgBox "Разрешение дисплея :" & x & " : " & y
End Sub
После этого, можно установить требуемые Width и Heigth формы.
Однако, если Вам нужно развернуть форму на весь экран (не зависимо от разрешения), то лучше воспользоваться другими API-функциями:
Код:
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Sub test2()
    ShowWindow FindWindow(vbNullString, UserForm1.Caption), 3&
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.07.2009, 11:36   #3
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Спасибо за ответ. Только я не могу разобраться со вторым кодом. Как и куда вписать его если у меня уже есть своя форма?
ru3000 вне форума Ответить с цитированием
Старый 28.07.2009, 11:52   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Строка кода
Код:
ShowWindow FindWindow(vbNullString, UserForm1.Caption), 3&
инициализирует окно (форму) с именем UserForm1.Caption. Т.е. если у Вас есть форма UserForm1 с любым присвоенным именем (Caption), то будет вызвана именно эта форма и развернута на весь экран (свойство 3&). Если нужно отобразить другую форму - сделайте соответствующие изменения в коде.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.07.2009, 12:24   #5
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Спасибо, большое!
ru3000 вне форума Ответить с цитированием
Старый 28.07.2009, 13:01   #6
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Вопрос, по размеру экрана. Можно ли при открытии книги.xls делать размер экрана всегда 1280х1024?
ruavia3 вне форума Ответить с цитированием
Старый 28.07.2009, 13:22   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Это не так просто. Посмотрите один из возможных вариантов во вложении.
Вложения
Тип файла: rar DisplayResolution.rar (10.8 Кб, 265 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.07.2009, 15:26   #8
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Очень круто! А можно еще дописать, чтобы после изменения размеров экрана, окно Excel разворачивалось во весь экран?
ruavia3 вне форума Ответить с цитированием
Старый 28.07.2009, 16:08   #9
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Application.DisplayFullScreen = True
Aent вне форума Ответить с цитированием
Старый 28.07.2009, 16:34   #10
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Aent, спасибо. Работает)
ruavia3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера формы по размеру екрана Simon..14 Общие вопросы C/C++ 7 09.06.2009 20:57
Как запретить Изменение размера формы girz Общие вопросы Delphi 5 31.05.2009 10:29
Изменение разрешения экрана Alex Cones Мультимедиа в Delphi 2 16.04.2009 19:34
автоматическое изменение падежа слова B00lean Microsoft Office Word 5 20.03.2009 00:43
Автоматическое изменение количества строк в таблице THE_ENGINEER Microsoft Office Excel 7 19.10.2008 21:28