powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL. Изменение расположения Userform.
4 сообщений из 4, страница 1 из 1
EXCEL. Изменение расположения Userform.
    #39838887
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello world!
Помогите задать расположение формы.
В проект была добавлена форма.
Код формы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
'константы для функций API

Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X
Private Const LOGPIXELSY = 90 ' Logical pixels/inch in Y
'Функции API, применяемые для поиска окна и изменения его стиля
#If VBA7 Then
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDc As LongPtr, ByVal nIndex As LongPtr) As LongPtr
    Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As LongPtr) As LongPtr
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hDc As Long) As LongPtr
#Else
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDc As Long, ByVal nIndex As Long) As Long
    Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDc As Long) As Long
#End If

Private Sub UserForm_Initialize()

    Dim hDc As Long
    Dim lngRetVal As Long
    Dim varPixToInchX As Variant
    Dim varPixToInchY As Variant
     
    hDc = GetDC(0)
        varPixToInchX = GetDeviceCaps(hDc, LOGPIXELSX)
        varPixToInchY = GetDeviceCaps(hDc, LOGPIXELSY)
     
    lngRetVal = ReleaseDC(0, hDc)

    frmHourglass.Top = 1 / varPixToInchY * 72
    frmHourglass.Left = 5 / varPixToInchX * 72

End Sub


Запуск формы производится из модуля:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub test()

        Dim form
    
        frmHourglass.Show vbModeless

        Set form = frmHourglass
        DoEvents
        
        Unload frmHourglass

End Sub

Если поставить точку останова в конце UserForm_Initialize, то Me.Top = 0.75 Me.Left = 3.75
А если после Set form = frmHourglass, то Me.Top = 333 Me.Left = 627.75

То есть, я не могу изменить эти свойства формы.
Как правильно задавать свойства Top и Left?
...
Рейтинг: 0 / 0
EXCEL. Изменение расположения Userform.
    #39839035
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yagrus2,

А свойство формы StartUpPosition установлено в 0-Manual? Это обязательно надо сделать перед заданием пользовательского расположения формы.
...
Рейтинг: 0 / 0
EXCEL. Изменение расположения Userform.
    #39839070
Фотография Yagrus2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
Спасибо, заработало!
...
Рейтинг: 0 / 0
EXCEL. Изменение расположения Userform.
    #39839596
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yagrus2, резануло глаз отсутствие PtrSafe в объявлениях функций API vba7
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL. Изменение расположения Userform.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]