【问题标题】:Open a extern workbook and returning a worksheet does not work打开外部工作簿并返回工作表不起作用
【发布时间】:2014-12-17 16:26:14
【问题描述】:

我的错误编号为 1004:

Function getWorksheet(SheetNumber As Integer) As Worksheet

    Dim workbook As workbook
    Dim file As Variant

    file = ShowFileDialogAndFindFile

    Set workbook = Workbooks.Open(file, True, True)

    getWorksheet = workbook.Worksheets(SheetNumber)

End Function

Function ShowFileDialogAndFindFile() As Variant

    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    Dim vrtSelectedItem As Variant

    With fd

        If .Show = -1 Then

            For Each vrtSelectedItem In .SelectedItems

                ShowFileDialog = vrtSelectedItem

            Next vrtSelectedItem
        Else
        End If
    End With
    Set fd = Nothing

End Function

我正在从另一个模块调用:

Dim sheetExtern As Worksheet
sheetExtern = getWorksheet(1)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要使用关键字Set 来执行此操作。基本上:

    无法工作

    Dim sheetExtern As Worksheet
    sheetExtern = getWorksheet(1)
    

    应该可以工作(假设功能的其余部分没问题):

    Dim sheetExter As Worksheet
    Set sheetExtern = getWorksheet(1)
    

    除了原生类型(如String、Integer、Double)外,当你想在VBA中设置对象时,需要在前面使用关键字Set

    OK:a = 2(本机类型整数) OK:a = "hello"(原生类型字符串) KO:a = New Collection(必须设置集合,即Set a = New Collection)。

    值得阅读here和背景问题here的答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多