Range.Find()失败
我有这样的要求:
- 我有两个Excel文件与列A到Q的数据
- 我遍历每个Excel中的每一行中的每一行,获取列A中的值,并在其他Excel中find相应表单中的值。
- 如果有匹配,我在两个Excel中检查列A,G和J匹配的值。 如果它们不匹配,它们将被logging在一个日志文件中(Excel的matrixtypes表示不匹配的地方)。 (还有待执行)
- 如果没有匹配,我必须再次login。 (还有待执行)
该守则是:
For Each workSheet1 In MainWorkBook.Worksheets Set MainWorksheet = workSheet1 Set SecondaryWorksheet = workSheet1 MainWorksheet.Activate Cells.Select Selection.EntireColumn.Hidden = False Selection.EntireRow.Hidden = False rowcount = MainWorksheet.Cells(Rows.count, 1).End(xlUp).Row For i = 3 To rowcount MainCheckName = Trim(MainWorksheet.Cells(i, "A")) If (PreviousCheck <> MainCheckName And MainCheckName <> "") Then SecondaryWorksheet.Activate rowcount = SecondaryWorksheet.Cells(Rows.count, 1).End(xlUp).Row SecondaryWorksheet.Range(SecondaryWorksheet.Cells(1, "A"), SecondaryWorksheet.Cells(rowcount, "A")).Select Set SecondaryCheckName = Selection.Find(what:=MainCheckName, LookAt:=xlWhole) If Not SecondaryCheckName Is Nothing Then CheckRow = Selection.Find(what:=MainCheckName, LookAt:=xlWhole).Row <further process here> Next Next
现在,我有这个问题:
Set SecondaryCheckName = Selection.Find(what:=MainCheckName, LookAt:=xlWhole)
在处理了大约十个工作表的这个活动之后,尽pipe我在两个不同工作簿的工作表中都有匹配的内容,但是我Nothing
返回Find
函数的内容。
什么是错的,为什么在这里失败?
您没有包含SecondaryCheckName
的声明,但是每个指示都是一个string,而不是Rangetypesvariables。 您不应Set
其Set
为由Range.Find方法返回的Range对象 ; 它应该简单地分配给.Find结果的值。 或者,将其声明为Rangetypesvariables,以便Set
其Set
为Range对象以备将来使用。
SecondaryCheckName = Selection.Find(what:=MainCheckName, LookAt:=xlWhole).Value2
那是你为什么收到错误的答案。 但是,我不认为这是完成你的目标的最好方法。 有一个决定缺乏错误控制,你应该减less,如果不是完全避免使用。selectand
select。