运行时错误' 1004'传递工作表名称

时间:2017-05-11 19:44:59

标签: excel vba excel-vba

以下函数用于循环遍历一系列列标题并返回所选标题的列号。该函数获取搜索名称和执行搜索的工作表。

Function getColumn(name As String, sheet As Worksheet) As Integer

Dim k As String, flag As Boolean, column As String

flag = False
k = 1

Do While flag <> True
    column = sheet.Cells(1, k).Value
    If column = name Then
        flag = True
    Else
        flag = False
        k = k + 1
    End If
Loop

getColumn = k

End Function

它在以前的工作表中有效,但此行突出显示为错误点。

column = sheet.Cells(1, k).Value

我尝试过以多种方式传递工作表名称。作为Sheet9,没有引号,作为Sheet(&#34; PAYABLES&#34;)等。

我还尝试更改参数类型,因此表格是一个字符串并且具有以下内容:

column = Sheets(sheet).Cells(1, k).Value

但没有运气!

PLZ HALP

1 个答案:

答案 0 :(得分:1)

如果从工作表单元格调用该函数,则应传递工作表 name 而不是工作表对象

Function getColumn(name As String, sheetn As String) As Long
Dim k As Long, flag As Boolean, column As String

flag = False
k = 1

Do While flag <> True
    column = Sheets(sheetn).Cells(1, k).Value
    If column = name Then
        flag = True
    Else
        flag = False
        k = k + 1
    End If
Loop

getColumn = k
End Function

将起作用:

enter image description here

如果包含错误处理逻辑会更好。