我正在创建用于审阅Excel工作表的用户表单。我需要搜索特定列以查看用户是否已查看该行。如果有,则单元格将填充“已审核”,如果尚未进行审核,则其中将包含“未审核”。
每个部门都有自己的列记录,无论Row是否已经过审核。即Dept1可能已经审查过这一行,而Dept2还没有。
我尝试过像
这样的东西 With Sheets("ECR")
UnReviewedRow = .Range(DepartmentReviewColumn:DepartmentReviewColumn).Find(what:="Not Reviewed", after:=.Cells(DepartmentReviewColumn, 3)).Row
End With
但是我收到了一个错误,不太确定它来自哪里。硬编码的“3”是因为我知道所有条目都从第三行开始,上面的所有内容都是标题。
我发现了一些不同的类似问题,但他们都假设每次搜索的列都是相同的。我的问题是我不想为每个部门编写代码,我希望比这更优雅。
答案 0 :(得分:1)
这样的事情:
With Sheets("ECR")
UnReviewedRow = .Range(DepartmentReviewColumn & ":" & DepartmentReviewColumn).Find(What:="Not Reviewed", After:=.Cells(3, DepartmentReviewColumn)).Row
End With
修改:
请注意,如果找不到搜索字符串,此代码将失败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)。发布时,请包含遇到的所有错误的文本。