如果.Show等于 -1,就会出现编译错误:类型不匹配

编程语言 2026-07-09
With UFRM_ImageTypePicker
    If .Show = -1 Then

编译错误:类型不匹配。if语句中的等号被选中并高亮为引发错误的文本。

它已经工作了好几周,今天突然出现这个编译错误,我完全不知道该怎么修复。我多年来一直在使用这段相同的基本代码结构,涉及多个用户窗体,直到今天才出现问题;现在完全不知所措。

我在VBA for Word、Excel和 PowerPoint中都使用过这个基本结构。我目前正在Visio中进行我的第一个VBA项目,不知道是否会对这件事有影响。

我确实需要添加对Excel的引用,这样我才能使用文件和文件夹对话框,因为Visio原生并不提供它们。

有谁有办法吗?

解决方案

我确实需要添加对Excel的引用,这样我才能使用文件和文件夹对话框,因为Visio原生不提供它们。

我不知道它在Visio中是否可行,但这是一个文件对话框的示例。

需要对 Microsoft Excel 16.0 Object Library 的引用设置。

    Dim excelApp As New Excel.Application
    Dim fd As FileDialog
    Set fd = excelApp.FileDialog(msoFileDialogFilePicker)
    With fd
        ' Show the dialog
        If .Show = -1 Then ' -1 means OK clicked
            MsgBox .SelectedItems(1)
        Else
            MsgBox "Cancelled"
        End If
    End With

我以为你是在尝试在UserForm中实现FileDialog的功能。

你可以按如下方式获取UserForm的返回值。

UserForm1

Option Explicit

Public Result As Integer

Private Sub UserForm_Activate()
    Result = 0
End Sub

Private Sub OkButton_Click()
    Result = -1
    Me.Hide
End Sub

Private Sub CancelButton_Click()
    Result = 0
    Me.Hide
End Sub

Module

Option Explicit

Sub Test()
    With UserForm1
        .Show
        If .Result = -1 Then
            MsgBox "OK"
        Else
            MsgBox "Canceled"
        End If
    End With
End Sub
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章