1

Тема: Visual Basic и VBA

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

2

Re: Visual Basic и VBA

Ситуация:

При открытии рабчей книги Excel запускается автоматически форма диалогового окна.
Всё великолепно, но надо было сделать так, что-бы само приложение "Свернулось" в "Панель задач", а диалоговое окно осталось и в нём можно было работать.

Решение:

В самой рабочей книге написать код
НЕ правильное решение:

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

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

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

3

Re: Visual Basic и VBA

Убрать кнопку «Закрыть»

Чтобы из формы убрать кнопку «Закрыть» (Х)
просто скопируйте и вставьте код в форму
(лучше в начало)

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

ScrollBars

Если вы в своей форме хотите использовать ScrollBars, но он не хочет работать, то пропишите следующие строки:

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

End Sub