1

Тема: Visual Basic и VBA

[b]Visual Basic[/b] и Visual Basic for Applications
Обсуждение ситуаций, вопросы и решения, листинги.

2

Re: Visual Basic и VBA

[h][color=#F57900]Ситуация:[/color][/h]При открытии рабчей книги Excel запускается автоматически форма диалогового окна.
Всё великолепно, но надо было сделать так, что-бы само приложение "Свернулось" в "Панель задач", а диалоговое окно осталось и в нём можно было работать.

[b][color=#4E9A06]Решение:[/color][/b]

В самой рабочей книге написать код
[color=#CC0000]НЕ правильное[/color] решение:

Private Sub Workbook_Open()
frmXxxxxx.Show                                     'открытие формы
Application.WindowState = xlMinimized      'свёртывание приложения
End Sub

А вот это – [b]ПРАВИЛЬНОЕ[/b] решение:

Private Sub Workbook_Open()
Application.WindowState = xlMinimized      'свёртывание приложения
frmXxxxxx.Show                                     'открытие формы
End Sub

3

Re: Visual Basic и VBA

[h][color=#F57900]Убрать кнопку «Закрыть»[/color][/h]
Чтобы из формы убрать кнопку «[b]Закрыть[/b]» (Х)
просто скопируйте и вставьте код в форму
(лучше в начало)

Private Declare Function FindWindow _
        Lib "user32.dll" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
       ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong _
        Lib "user32.dll" Alias "GetWindowLongA" ( _
        ByVal hWnd As Long, _
        ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
       Lib "user32.dll" Alias "SetWindowLongA" ( _
        ByVal hWnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long

Private Sub UserForm_Initialize()
    Dim ihWnd As Long, iStyle As Long

    ihWnd = FindWindow(vbNullString, Me.Caption)
    iStyle = GetWindowLong(ihWnd, -16&)
    SetWindowLong ihWnd, -16&, iStyle And Not &H80000
End Sub

4

Re: Visual Basic и VBA

[h][color=#CE5C00]ScrollBars[/color][/h]
Если вы в своей форме хотите использовать [b]ScrollBars[/b], но он не хочет работать, то пропишите следующие строки:

Private Sub UserForm_Activate()
    frmXXXXX.ScrollHeight = 2 * frmXXXXX.Height    [color=#4E9A06]' для вертикальной прокрутки[/color]
    frmXXXXX.ScrollWidth = 2 * frmXXXXX.Width    [color=#4E9A06]' для горизонтальной прокрутки[/color]
        [color=#4E9A06]' ваш код ..............[/color]

End Sub