在Excel中的另一个工作表中使用Range.Find For Cells

时间:2014-06-18 13:55:16

标签: excel vba find range

我尝试使用range.Find在另一张包含前一张表格中的字符串输入的工作表中查找单元格(我在表格中搜索列标题,因此我赢了'如果列被移动,我必须更新我的宏)。我使用下面的函数,但我总是得到一个错误,说明对象是必需的。我已经看过类似的主题并尝试了他们的方法,但对他们有用的东西并不适合我。如何使用Range.Find查找列标题位于不同工作表中的单元格?以下是我使用的代码:

Function FindColumn(ByVal name as String) As Range
    'cds is the other worksheet I need to find the column header in
    Set FindColumn = cds.Range("A1:AA1").Find(name) 
    If FindColumn Is Nothing Then MsgBox(name & " Not Found!")
    Exit Function
End Function

1 个答案:

答案 0 :(得分:0)

在您的代码中,cds似乎是Nothing,这可能会导致该错误。 cds是否在代码中的其他位置分配了工作表对象?如果是这样,那个变量的范围是什么?如果它不是模块或公共的,那就可以解释它。

如果是模块/公共,请确保在之前分配变量cds以调用该函数。

如果它是一个过程级变量,则需要将其传递给函数,如:

FindColumn "columnname", cds

修改函数以接受这个附加参数:

Function FindColumn(byVal name as String, cds as Worksheet)