偏移量

时间:2015-08-21 15:17:12

标签: excel vba excel-vba runtime-error offset

我有一个工作簿,其中包含来自所有分支的所有发票的列表,我们称之为“Everything”,基本上我需要搜索是否在包含每个分支发票的另一个文件中找到发票。它实际上存在于每个分支的文件中,每个文件按月分割,我需要检查每个工作表,然后在单元格中插入一个值。我们将这个称为“0001”,依旧为每个分支。

“一切”文件基本上包含一个带有分支编号的列,一个带有发票号,一个带有发行者代码,另一个说是否在分支文件中找到它。分支文件除分支编号外包含相同的内容,最后一列显示发票是否在“Everything”文件中。有些情况下,发票在分支文件上,并且不在“所有文件”上,也包含在所有文件上并且不在分支文件上的情况。

添加是或否的代码部分是可以的,但是在分支文件上找到发票号后,我需要检查它的发行者是否与Everything文件上的发行者相同,我正在运行时间错误1004.你能帮助我吗?这是代码中的一个示例:

Dim cnpj as range
Dim NFE as range

Set NFE = sh.Columns(colSrch).Find(valorprocurado, LookIn:=xlValues, lookat:=xlWhole)
If Not NFE Is Nothing And Range(NFE).Offset(, 8) = cnpj Then

错误发生在代码的最后一行。在它开始时我使用Everything文件设置cnpj,它似乎正在工作。有什么问题?

2 个答案:

答案 0 :(得分:0)

我认为你可以把最后一行写成

如果不是NFE,NFE.Offset(,8)= cnpj那么

答案 1 :(得分:0)

正如Scott建议的那样,我在第一个语句中嵌套了第二个if语句,并且它有效。非常感谢你的帮助!

代码保持这样:

Dim cnpj as range
Dim NFE as range

Set NFE = sh.Columns(colSrch).Find(valorprocurado, LookIn:=xlValues, lookat:=xlWhole)
If Not NFE Is Nothing
if Range(NFE).Offset(, 8) = cnpj Then
blablabla
end if
end for
end if