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

以下函数devise为循环访问一系列列标题并返回所选标题的列号。 该function获取search名称和执行search的工作表。

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(“PAYABLES”)等

我也尝试改变参数types,以便表是一个string,并有这样的:

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

但是没有运气!

PLZ哈尔滨

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

 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 

将工作:

在这里输入图像说明

如果包含error handling逻辑,会更好。