Вот чуток доработанный файл, позволяющий прокручивать ListView (если кому интересно). Только надо объявить Private oCtl As Object
Код
Private Function MouseRotate_VBA7(ByVal nCode As Long, ByVal wParam As LongPtr, ByRef lParam As MOUSEHOOKSTRUCT) As LongPtr
Dim n&
On Error GoTo ErrHandler
If wParam = &H20A Then
If lParam.hWnd > 0 Then n = -1 Else n = 1
If TypeOf oCtl Is MSForms.ListBox Then
n = n + oCtl.TopIndex
If n >= 0 Then oCtl.TopIndex = n: Exit Function
ElseIf TypeOf oCtl Is MSComctlLib.ListView Then
Dim currentIndex As Long
Dim i As Long
currentIndex = oCtl.selectedItem.index
' Вычисляем новый индекс
n = currentIndex + n
If n < 1 Then
n = 1 ' Ограничиваем до первого элемента
ElseIf n > oCtl.ListItems.count Then
n = oCtl.ListItems.count ' Ограничиваем до последнего элемента
End If
' Снимаем выделение со всех элементов и выделяем новый
For i = 1 To oCtl.ListItems.count
oCtl.ListItems(i).Selected = False
Next i
oCtl.ListItems(n).Selected = True
oCtl.ListItems(n).EnsureVisible
Exit Function
End If
End If
MouseRotate_VBA7 = CallNextHookEx(nMouseHook, nCode, wParam, ByVal lParam)
Exit Function
ErrHandler:
MsgBox "Произошла ошибка в MouseRotate_VBA7 " & Err.Description, vbCritical, "Ошибка"
Err.Clear
UnHookScroll
End Function
Спасибо за совет! Ho у меня не было цели вызывать форму из другого файла. Это я, как сейчас говорят, делал "рефакторинг" ))) OOps! Заголовок темы невнимательно прочитал. Прошу прощения...
Private Sub lstMtrls_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
eventName = "lstMtrls_DblClick"
Overheads (eventName)
End Sub
в общем модуле
Код
Public eventName As String
Sub Overheads(ByVal eventName, Optional KeyAscii)
Dim i As Integer, j As Integer, k As Integer
Dim arrAMnt() As String, a As String
'MsgBox eventName
With frmWorks
Select Case eventName
Case .....
Case "lstMtrls_DblClick"
Какой-то код
End Select
End With
End Sub