Доброе утро друзья. Выручайте. Хочу сделать растягивание формы мышкой за уголок. Для этого воспользовался библиотекой USER32. Дома тестировал код на х86 и офисе 2010 х86. Прописал кучу условий, но пришёл на работу, запустил файл на системе х64 в 2013 офисе х64 и не работает. И чего только не старался менять всё равно ругается на что-нибудь. Чего только из гугла не подставлял и не пробовал. В общем-то задача стоит в том чтобы растягивание работало начиная с офиса 2003 заканчивая х64 2016. В чём ещё может быть ошибка. Код уже раз 20 менял поэтому сам запутался как должно быть правильно.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#If Win64 Then
Private Declare PtrSafe Function GetWindowLongPtr Lib "USER32" Alias "GetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "USER32" Alias "SetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#Else
Private Declare PtrSafe Function GetWindowLongPtr Lib "USER32" Alias "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare Function SetWindowLongPtr Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#End If
#Else
Private Declare Function GetWindowLongPtr Lib "USER32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongPtr Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If
Private Sub UserForm_Initialize()
SetWindowLongPtr FindWindow(vbNullString, Me.Caption), -16&, GetWindowLongPtr(FindWindow(vbNullString, Me.Caption), -16&) Or &H40000
End Sub
Если кому-то нужен код, то используйте на здоровье. Изменение формы мышкой. Правда на 2010 ещё не тестировал. Если не сложно отпишитесь с версией системы и офисом работает или нет, чтобы можно было дальше допиливать.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.