在VBA的列中查找特定单元格条目

我正在创build一个用户表单来审查一个Excel工作表。 我需要search特定的列来查看用户是否已经查看了该行。 如果他们有,这个单元格将被填充“已审查”,如果它还没有被审查,它将有“未经审查”。

每个部门都有自己的Column日志logging,不pipeRow是否被审查过。 即第1部分可能已经审查了该行,而第2部分尚未。

我试过类似的东西

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

但是我得到一个错误,不太清楚它是从哪里来的。 硬编码的“3”是因为我知道所有的条目从第三行开始,上面的所有内容都是标题。

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

像这样的东西:

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

修改:

  • Range()现在需要一个正确构build的string参数;
  • Cells()现在有一个行号作为其第一个参数,一个列表示为一个string作为其第二个参数。

请注意,如果未findsearchstring,则此代码将失败,并且Object variable or With block variable not set 。 通过将UnReviewedRow初始化为0(零),并On Error Resume Next查找调用上方放置On Error Resume Next ,并On Error Resume <either 0 or your original error handler's label>查找调用下面放置On Error Resume <either 0 or your original error handler's label>您可以处理这种情况。 然后,检查UnReviewedRow = 0是否适当。

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