在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)。 张贴时,请包括遇到的所有错误的文本。