userform1.ShowModal=False
А что сделал то уже?YanMinsk писал(а):Необходимо написать макрос осуществляющий поиск по заранее установленным правилам....
UserForm1.Show 0 'Форма будет немодальной. Т.е. редактирование текста будет доступно при открытой форме
UserForm1.Show 1 'Форма будет модальной. Т.е. редактирование текста будет не доступно при открытой форме. Этот режим стоит по умолчанию.
'Переменные для записи координат выделения, и его размеров.
Dim pLeft As Long
Dim pTop As Long
Dim pWidth As Long
Dim pHeight As Long
'Собственно сама запись в переменные значений выделения.
ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range
viter.alex писал(а):Положение формы устанавливается ее параметрами Top и Left. Это нужно делать после каждого поиска. Немного поколдуй с геометрией, чтобы форма никогда не залазила на выделение. Где-то у меня был пример кода, если найду выложу.
ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range
l = UserForm1.Left
t = UserForm1.Top
w = UserForm1.Width
h = UserForm1.Height
Private Sub UserForm_Initialize()
Dim pLeft As Long
Dim pTop As Long
Dim pWidth As Long
Dim pHeight As Long
Dim Xres As Long: Xres = System.HorizontalResolution
Dim Yres As Long: Yres = System.VerticalResolution
'Собственно сама запись в переменные значений выделения.
ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range
With Me
'если форма помещается между выделением и нижним краем экрана
If pTop + pHeight + .Height <= Yres Then
'Располагаем форму по левому краю выделения сразу под ним.
.Left = pLeft: .Top = pTop
'Если форма не помещается под выделением, то размещаем ее над ним.
ElseIf pTop - .Height > 0 Then
.Left = pLeft: .Top = pTop - .Height
End If
End With
End Sub
Private Sub CommandButton7_Click()
Dim pLeft As Long
Dim pTop As Long
Dim pWidth As Long
Dim pHeight As Long
Dim рр As Long
ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range
hh = Me.Top + pHeight
End Sub
Private Sub CommandButton7_Click()
Dim pLeft As Long
Dim pTop As Long
Dim pWidth As Long
Dim pHeight As Long
Dim рр As Long
ActiveWindow.GetPoint pLeft, pTop, pWidth, pHeight, Selection.Range
While Me.Top + pHeight > pTop
Me.Top = Me.Top - 0.1
Wend
While Me.Top + pHeight < pTop
Me.Top = Me.Top + 0.1
Wend
End Sub
YanMinsk писал(а):…Поискал по форуму, но так нигде и не нашел. Как перевести пикселы в поинты?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19