在向Userform添加图标时键入不匹配

时间:2018-01-15 07:03:24

标签: excel vba excel-vba userform

我一直在使用this answer中的相同代码,并在每次搜索互联网时找到相同的代码,但我总是得到一个

  

类型不匹配

http://localhost:3000/myVideo.mp4中的FindWindow函数。还试过this,下载了示例并得到了同样的错误。任何想法为什么?我使用的是64位版本。谢谢。

1 个答案:

答案 0 :(得分:3)

在64位版本FindWindow中,返回LongPtr而不是Long(32位)。

Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
     ByVal lpWindowName As String _
) As LongPtr '<-- FindWindow returns a LongPtr (for 64bit)

因此

hWnd = FindWindow(vbNullString, Me.Caption)

失败,因为hWnd中的LongAddIcon()声明为LongPtr,但应该是#If VBA7 Then Dim hWnd As LongPtr #Else Dim hWnd As Long #End If

您可以使用

Long

根据WinAPI函数的声明,确保它适用于32位和64位版本。

注意:您可以检查声明为LongPtr的其他变量是否也需要更改为Savon.client( endpoint: "http://XXX.XXX.XXX.1:15043/enmac/SOAP", namespace: '', convert_request_keys_to: :camelcase, env_namespace: 'SOAP-ENV', namespace_identifier: nil, log: true, log_level: :info, pretty_print_xml: true, read_timeout: 90, open_timeout: 90, headers: { "Accept-Encoding" => "gzip" } ) 。因此,只需查看64位声明以及函数返回的内容。