2017-10-20 91 views
0

我正在创建用于查看Excel表单的用户表单。我需要搜索特定列以查看用户是否已经查看了该行。如果他们有,单元格将填充“已审核”,如果尚未审核,则会有“未审核”。在VBA中的列中查找特定单元格条目

每个部门都有自己的Column日志记录,该Row是否已经过审查。即Dept1可能已经审查了该行,而Dept2尚未。

我已经试过类似

With Sheets("ECR") 
     UnReviewedRow = .Range(DepartmentReviewColumn:DepartmentReviewColumn).Find(what:="Not Reviewed", after:=.Cells(DepartmentReviewColumn, 3)).Row 
    End With 

但我发现了一个错误,不太肯定它是从未来虽然。硬编码“3”是因为我知道所有条目都从第三行开始,上面的所有内容都是标题。

我发现了几个不同的类似问题,但他们都假设每次搜索的列都是相同的。我的问题是,我不想为每个部门编写代码,我想比这更优雅一些。

+0

单元格是行,列不是列,行 – QHarr

+1

'.Range(DepartmentReviewColumn:DepartmentReviewColumn)'看起来像一个问题。 'DepartmentReviewColumn'的价值是什么? –

+1

也假设DepartmentReviewColumn字符串,并需要正确连接? DepartmentReviewColumn&“:”&DepartmentReviewColumn – QHarr

回答

1

事情是这样的:

With Sheets("ECR") 
    UnReviewedRow = .Range(DepartmentReviewColumn & ":" & DepartmentReviewColumn).Find(What:="Not Reviewed", After:=.Cells(3, DepartmentReviewColumn)).Row 
End With 

作出修改:

  • 范围()现在需要一个正确的内置字符串参数;
  • Cells()现在有一个行号作为其第一个参数,并且一个列表示为一个字符串作为其第二个参数。

请注意,如果未找到搜索字符串,则此代码将失败,并返回Object variable or With block variable not set。您可以通过将UnReviewedRow初始化为例如0(零),并将On Error Resume Next放在查找呼叫之上,并将On Error Resume <either 0 or your original error handler's label>放在查找呼叫之下。然后,检查UnReviewedRow = 0是否适当。

总是把Option Explicit放在模块和类的顶部,并编译你的代码(Debug/Compile VBAProject)。发布时,请包含遇到的所有错误的文本。

相关问题